!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part76
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ブーイモ MMff-XZ6m)
2022/05/01(日) 02:23:41.78ID:2t63WK/jM689デフォルトの名無しさん (ワッチョイ 3f3d-9oGY)
2022/06/26(日) 21:43:05.30ID:h799Melv0 VBAのマクロ名てなにか制限ある?
Sub n98()
MsgBox "a"
End Sub
というマクロを作ったんだが、実行できない。実行ボタンがグレーアウトする。
しかも、マクロボタンを押すとセルカーソルが彼方に飛ばされるんだが。
https://i.imgur.com/7iCfenT.mp4
Sub n98()
MsgBox "a"
End Sub
というマクロを作ったんだが、実行できない。実行ボタンがグレーアウトする。
しかも、マクロボタンを押すとセルカーソルが彼方に飛ばされるんだが。
https://i.imgur.com/7iCfenT.mp4
690デフォルトの名無しさん (HK 0H9f-b1XO)
2022/06/26(日) 22:29:47.48ID:UUS+pyK9H691デフォルトの名無しさん (HK 0H9f-b1XO)
2022/06/26(日) 22:31:36.52ID:UUS+pyK9H マクロ名の制限ももちろんあるよ
ググればすぐ出てくるはず
だけどこのコードのマクロ名は問題無い
ググればすぐ出てくるはず
だけどこのコードのマクロ名は問題無い
692デフォルトの名無しさん (ワッチョイ 3f3d-9oGY)
2022/06/26(日) 22:39:05.59ID:h799Melv0 >>690
VBEでF5なら動くが、
エクセル本体で開発タブのマクロボタン押すとああなる。
ちなみにバージョンは2013。
マクロ名が英字2字+数字だと、マクロボタン押すとそのアドレスのセルに飛ばされるな。
もちろんマクロは実行できない。
そんな制限あったけ?
セルのアドレスて「予約語」になるのか?
VBEでF5なら動くが、
エクセル本体で開発タブのマクロボタン押すとああなる。
ちなみにバージョンは2013。
マクロ名が英字2字+数字だと、マクロボタン押すとそのアドレスのセルに飛ばされるな。
もちろんマクロは実行できない。
そんな制限あったけ?
セルのアドレスて「予約語」になるのか?
693デフォルトの名無しさん (ワッチョイ ff8c-1MFK)
2022/06/26(日) 23:12:48.18ID:47IFcp1V0694デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/26(日) 23:30:30.80ID:CNfWwh200 この画面開いたらn98セルに行って勝手に選択(コピー?)してくれる
https://i.imgur.com/8G6jMt0.png
逆に、alt+f8でマクロを開いた状態でセル選択するとテキストボックスに反映されるので、
ここは参照かなにかで連動してるっぽい
https://i.imgur.com/cIRhTsz.png
https://i.imgur.com/8G6jMt0.png
逆に、alt+f8でマクロを開いた状態でセル選択するとテキストボックスに反映されるので、
ここは参照かなにかで連動してるっぽい
https://i.imgur.com/cIRhTsz.png
695デフォルトの名無しさん (オッペケ Sra3-oI2n)
2022/06/27(月) 07:11:11.91ID:KEClHONvr >>694
予約語とかセル番地名、数字始まりは駄目
予約語とかセル番地名、数字始まりは駄目
696デフォルトの名無しさん (HK 0H9f-b1XO)
2022/06/27(月) 07:18:40.52ID:pJh/2YwLH >>695
セル番地もダメだったのか、ウソついてごめんなさい
セル番地もダメだったのか、ウソついてごめんなさい
697デフォルトの名無しさん (スププ Sd5f-J46v)
2022/06/27(月) 07:20:43.06ID:kD2T1aicd セル番地名ってダメだったのか
698デフォルトの名無しさん (ワッチョイ 4f0e-6kVq)
2022/06/27(月) 07:28:39.14ID:JHJu1s6G0 For each i in collection
if a=1 then
if b=1 then
if c=1 then
Debug.print "うんこ"
end if
end if
end if
next i
こんな階層はしないほうがいいですか?もしそうならどうすべきですか?
ちなみに実際の条件文はa=1などのように単純ではなくてもっと複雑怪奇で長い文字列です。
if a=1 then
if b=1 then
if c=1 then
Debug.print "うんこ"
end if
end if
end if
next i
こんな階層はしないほうがいいですか?もしそうならどうすべきですか?
ちなみに実際の条件文はa=1などのように単純ではなくてもっと複雑怪奇で長い文字列です。
699デフォルトの名無しさん (エアペラ SD5f-+tXk)
2022/06/27(月) 07:42:09.30ID:/YUVVdlZD インデント揃えてれば良いんじゃない?
それかある程度深くなったら別ルーチンや関数に飛ばすとか
それかある程度深くなったら別ルーチンや関数に飛ばすとか
700デフォルトの名無しさん (ワッチョイ 7fdb-zdXj)
2022/06/27(月) 07:44:02.36ID:cx09ANOo0 if a=1 and b=1 and c=1
にすればすっきり
にすればすっきり
701デフォルトの名無しさん (スプッッ Sdbf-tCSL)
2022/06/27(月) 08:00:18.06ID:qwmHCu1Hd >>700
VBAはショートサーキットじゃないから遅くなる
VBAはショートサーキットじゃないから遅くなる
702デフォルトの名無しさん (ワッチョイ 3f01-DrrO)
2022/06/27(月) 08:05:04.58ID:3L19Fpz+0703デフォルトの名無しさん (スップ Sddf-gXkX)
2022/06/27(月) 09:20:29.88ID:WYWqaC3Yd704デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 09:26:36.50ID:iDqL/u9w0 年取ると4階層なんかもう見たくない
705デフォルトの名無しさん (スプッッ Sdbf-tCSL)
2022/06/27(月) 09:27:26.36ID:HPVEPi/ad Excel2021でも再現したわ
セル番地はモジュール名にできないのか、知らんかった
捨て変数とか作業ファイル名なんか普通にaaa1とか使ってるから、いつひっかかってもおかしくなかったのに
思い返してみると、なぜか捨てSubはtest1とかmacro1にしてた
セル番地はモジュール名にできないのか、知らんかった
捨て変数とか作業ファイル名なんか普通にaaa1とか使ってるから、いつひっかかってもおかしくなかったのに
思い返してみると、なぜか捨てSubはtest1とかmacro1にしてた
706デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 09:31:15.07ID:iDqL/u9w0 今わかってる範囲では、モジュール名にできるけど挙動が少しおかしくなる
避けられるなら避けたほうが無難だろうね
避けられるなら避けたほうが無難だろうね
707デフォルトの名無しさん (スップ Sd5f-tCSL)
2022/06/27(月) 09:34:13.54ID:Kt0Hv+oPd708デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
2022/06/27(月) 09:36:09.63ID:kVADuAyl0 >>698
いわゆる早期リターンとかガード節ってやつ
For Each i In Collection
If a <> 1 Then GoTo continue
If b <> 1 Then GoTo continue
If c = 1 Then
Debug.Print "OK"
End If
continue:
Next
いわゆる早期リターンとかガード節ってやつ
For Each i In Collection
If a <> 1 Then GoTo continue
If b <> 1 Then GoTo continue
If c = 1 Then
Debug.Print "OK"
End If
continue:
Next
709デフォルトの名無しさん (スップ Sddf-gXkX)
2022/06/27(月) 09:50:33.84ID:WYWqaC3Yd >>708
自分としてはもともとの判定を変更するような回答はどうかと思ったりするんだよね
複雑怪奇とかいてるのでわかりやすい回答なら「if not (a = 1) then」にしたほうがいいのではないかと
それとそこまで書いたらcの判定もcontinueで飛ばしたほうがすっきりするかと
自分としてはもともとの判定を変更するような回答はどうかと思ったりするんだよね
複雑怪奇とかいてるのでわかりやすい回答なら「if not (a = 1) then」にしたほうがいいのではないかと
それとそこまで書いたらcの判定もcontinueで飛ばしたほうがすっきりするかと
710デフォルトの名無しさん (ワッチョイ 0f7c-+tXk)
2022/06/27(月) 09:53:16.46ID:H4LNDdnJ0 >>707
マクロじゃなくてジャンプでいいってなるんじゃ
マクロじゃなくてジャンプでいいってなるんじゃ
711デフォルトの名無しさん (アウアウウー Sad3-n9/C)
2022/06/27(月) 10:00:09.47ID:Do3p35pda >>698
内容がわかるようにコメントつければいいんじゃね
内容がわかるようにコメントつければいいんじゃね
712デフォルトの名無しさん (ワッチョイ 3f01-DrrO)
2022/06/27(月) 10:15:26.20ID:3L19Fpz+0713デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 10:19:02.79ID:iDqL/u9w0 >>712
スマン、勘違いしてた
スマン、勘違いしてた
714デフォルトの名無しさん (ワッチョイ 3f01-DrrO)
2022/06/27(月) 10:24:13.47ID:3L19Fpz+0715デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
2022/06/27(月) 10:29:53.48ID:kVADuAyl0 まあ、複雑な判定するならメソッドに切り出すのが間違いないわな
VBEだとIDEのサポートないから若干めんどくさいけど
VBEだとIDEのサポートないから若干めんどくさいけど
716デフォルトの名無しさん (ワッチョイ 7fe3-n9/C)
2022/06/27(月) 11:00:14.42ID:tRNW+/P90 >>698
賛否あると思うが
For Each i In Collection: Do
If a <> 1 Then Exit Do
If b <> 1 Then Exit Do
If c <> 1 Then Exit Do
Debug.Print "OK"
Loop: Next
みたいな書き方もある
賛否あると思うが
For Each i In Collection: Do
If a <> 1 Then Exit Do
If b <> 1 Then Exit Do
If c <> 1 Then Exit Do
Debug.Print "OK"
Loop: Next
みたいな書き方もある
717デフォルトの名無しさん (ワッチョイ 7fe3-n9/C)
2022/06/27(月) 11:01:13.33ID:tRNW+/P90 最後の行間違えた
Loop Until 1: Next
Loop Until 1: Next
718デフォルトの名無しさん (アウアウウー Sad3-0NSx)
2022/06/27(月) 11:05:37.12ID:zkyvRAcfa あんまりにもネストするなら、判定文(if複数)だけ別プロシージャ(Function)として外出しして、TrueかFalseを返させるようにするかな
IsGoukaku みたいなプロシージャ名にすると何したいかがわかってメンテ楽だし
IsGoukaku みたいなプロシージャ名にすると何したいかがわかってメンテ楽だし
719デフォルトの名無しさん (ワッチョイ 3f3d-9oGY)
2022/06/27(月) 11:29:16.42ID:gUdOjGv30 セル番地がダメならダメでいいけど、あんな挙動をするのはバグだよ。
本来はメッセージだして弾くべきじゃね?
office365でも同じならだれかMSにチクってみてくれ。
以前、MSの掲示板にWinの不具合を書いたら、
速攻で消されたが、
こっちでも確認できたから開発にレポしといたていうメールが来て感動したわ。
本来はメッセージだして弾くべきじゃね?
office365でも同じならだれかMSにチクってみてくれ。
以前、MSの掲示板にWinの不具合を書いたら、
速攻で消されたが、
こっちでも確認できたから開発にレポしといたていうメールが来て感動したわ。
720デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 11:31:14.56ID:iDqL/u9w0 >>719
365でも同じだよ
365でも同じだよ
721デフォルトの名無しさん (ワッチョイ 3f3d-9oGY)
2022/06/27(月) 11:34:53.87ID:gUdOjGv30 >>700
if a=1 and b=1 and c=1
にすると内部では判断を3回することになる。
if a=1 then
if b=1 then
if c=1 then
にすると判断は少なくなるのだから、ネストするほうが正解じゃね?
もちろん、ifを書く順番は判定が少なくするようにする必要はあるが。
if a=1 and b=1 and c=1
にすると内部では判断を3回することになる。
if a=1 then
if b=1 then
if c=1 then
にすると判断は少なくなるのだから、ネストするほうが正解じゃね?
もちろん、ifを書く順番は判定が少なくするようにする必要はあるが。
722デフォルトの名無しさん (オッペケ Sra3-5iuk)
2022/06/27(月) 11:48:23.44ID:Fr547gX6r >>719
ゆうてVBAとかアプデすんの?
ゆうてVBAとかアプデすんの?
723デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 11:52:04.31ID:iDqL/u9w0 してるよ
724デフォルトの名無しさん (ワッチョイ cf49-5iuk)
2022/06/27(月) 11:52:52.11ID:nfvw1vkN0 セキュリティ以外で?
725デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 11:57:18.86ID:iDqL/u9w0 うん
726デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/27(月) 11:59:27.42ID:iDqL/u9w0 頻度はwindoewsやエクセルに比べたらかなり低いけど、やってるよ
確かちょっとずつ便利になってる。本当にちょっとだけ。関数が増えたりはしていないはず。
ソース探したけど見つからねぇ
確かちょっとずつ便利になってる。本当にちょっとだけ。関数が増えたりはしていないはず。
ソース探したけど見つからねぇ
727デフォルトの名無しさん (ワッチョイ cf49-5iuk)
2022/06/27(月) 12:02:08.29ID:nfvw1vkN0 ふーん。。
まあ元号はあったね。。
古臭いよね。。
まあ元号はあったね。。
古臭いよね。。
728デフォルトの名無しさん (ワッチョイ cf49-tCSL)
2022/06/27(月) 12:04:52.44ID:nfvw1vkN0729デフォルトの名無しさん (スフッ Sd5f-J46v)
2022/06/27(月) 13:50:25.11ID:FDoLWwM/d >>718
俺も大体これでやってる
俺も大体これでやってる
730デフォルトの名無しさん (ワッチョイ 4f5f-BW8P)
2022/06/27(月) 19:05:07.99ID:IOT9Z53O0 >>698
そもそもi使ってねーじゃん
そもそもi使ってねーじゃん
731デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 19:57:12.47ID:UdQiWAN30 どなたか教えてください。
売掛金消し込みのマクロを作成しています。VBAでソルバーを自動化したいと思っています。
目的セル、制約条件の参照セルの開始行が40行ごとに下がっていき、指定値は数値ではなく、セルを指定したいです。
とりあえず、全部の変数をvariant型にしてますが、なかなか上手くいきません。
売掛金消し込みのマクロを作成しています。VBAでソルバーを自動化したいと思っています。
目的セル、制約条件の参照セルの開始行が40行ごとに下がっていき、指定値は数値ではなく、セルを指定したいです。
とりあえず、全部の変数をvariant型にしてますが、なかなか上手くいきません。
732デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 20:18:45.52ID:UdQiWAN30 731です。
sub ソルバー()
dim 振込1 as variant
振込1=worksheets("ソルバー").range("n2:n8")
solverok setcell:= worksheets("ソルバー").range("i3"),
maxminval:=3,
valueof:=振込1,
bychange:=worksheets("ソルバー").range("e2:e40"),
enginedesc:="grg nonliner"
solveradd celreff:=worksheets("ソルバー").range("e2:e40"),relation:=4
solversolve userfinish=true
sub ソルバー()
dim 振込1 as variant
振込1=worksheets("ソルバー").range("n2:n8")
solverok setcell:= worksheets("ソルバー").range("i3"),
maxminval:=3,
valueof:=振込1,
bychange:=worksheets("ソルバー").range("e2:e40"),
enginedesc:="grg nonliner"
solveradd celreff:=worksheets("ソルバー").range("e2:e40"),relation:=4
solversolve userfinish=true
733デフォルトの名無しさん (ワッチョイ 0f01-zdXj)
2022/06/27(月) 20:22:23.17ID:jYXkLZ/o0 で、何がうまくいかないの?
734デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 20:26:50.30ID:UdQiWAN30735デフォルトの名無しさん (アウアウウー Sad3-0NSx)
2022/06/27(月) 20:35:36.69ID:9IVJ+eiIa >>734
ソルバーわからんから確認させてください
振込1って変数は配列に入れた値を指定したいものですか?それともセル自体を指定したいものですか?
前者であればそれでいいですが、後者なら変数はRange型にする上で代入時に
Set 振込1 =〇〇
としないといけませんが…
ソルバーわからんから確認させてください
振込1って変数は配列に入れた値を指定したいものですか?それともセル自体を指定したいものですか?
前者であればそれでいいですが、後者なら変数はRange型にする上で代入時に
Set 振込1 =〇〇
としないといけませんが…
736デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 20:37:19.75ID:UdQiWAN30 連投すみません。
変数宣言して、for〜next構文でe列を("e"&i+40)や、n列も("n"&i+40)みたいにしたいんです。
d列には請求金額、e列は空白、目的セルにはsumproduct関数が入ってます。
指定値セルはn2:n8で、それぞれ違う金額が入力されてます。入金額とn2:n8内の金額が一致する組み合わせの請求金額をVBAを使って、求めたいです。
変数宣言して、for〜next構文でe列を("e"&i+40)や、n列も("n"&i+40)みたいにしたいんです。
d列には請求金額、e列は空白、目的セルにはsumproduct関数が入ってます。
指定値セルはn2:n8で、それぞれ違う金額が入力されてます。入金額とn2:n8内の金額が一致する組み合わせの請求金額をVBAを使って、求めたいです。
737デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 20:39:44.13ID:UdQiWAN30738デフォルトの名無しさん (スプッッ Sd5f-h9lZ)
2022/06/27(月) 20:45:55.27ID:qw9z/asOd >>737
マルチ死ね
マルチ死ね
739デフォルトの名無しさん (ワッチョイ 0f01-zdXj)
2022/06/27(月) 20:58:49.57ID:jYXkLZ/o0 とりあえず、rangeで回すんじゃなくてcellsで回したら?
n列はcells(i,14)
e列はcells(i,5)で
n列はcells(i,14)
e列はcells(i,5)で
740デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 21:09:33.28ID:UdQiWAN30 >>739
sub または functionが定義されませんエラーが出ます…
sub または functionが定義されませんエラーが出ます…
741デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/27(月) 21:10:43.06ID:UdQiWAN30742デフォルトの名無しさん (ワントンキン MM0f-5jmv)
2022/06/27(月) 23:45:06.09ID:8dHt2RWvM こんな奴が作るプログラムで金勘定とか笑えるわ
己を知らないって馬鹿の特徴なんだよな
己を知らないって馬鹿の特徴なんだよな
743デフォルトの名無しさん (スフッ Sd5f-J46v)
2022/06/28(火) 00:04:39.14ID:41/DPGawd ソルバーってカタカナで書くの余計分からないよ
素直にSolverで良いだろうに
上の困ってるのは一旦マクロの記録で動作確認お薦め
素直にSolverで良いだろうに
上の困ってるのは一旦マクロの記録で動作確認お薦め
744デフォルトの名無しさん (ワッチョイ 3f7c-PGuA)
2022/06/28(火) 00:07:49.75ID:bUNh/khy0 >>742
2行目はよく解る www
2行目はよく解る www
745デフォルトの名無しさん (ワッチョイ 7fda-n9/C)
2022/06/28(火) 05:51:37.94ID:kKObdKOQ0 オレオレ詐欺の手伝い?
746デフォルトの名無しさん (アウアウウー Sad3-n9/C)
2022/06/28(火) 07:36:23.45ID:XbsSoqMza >>736
なんで会計ソフト使わないの?
なんで会計ソフト使わないの?
747デフォルトの名無しさん (ワッチョイ 3fda-eqyh)
2022/06/28(火) 07:54:25.17ID:2SIMEAUf0 Excelは万能ではないから会計ソフトでやるべき事柄
748デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/28(火) 08:48:25.11ID:8yuWSL180 この世で最高のコードを見かけた
With Range("F27:F56")
.Value = .Value
End With
With Range("F27:F56")
.Value = .Value
End With
749デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
2022/06/28(火) 09:10:04.94ID:3ZxXgE6I0750デフォルトの名無しさん (ワッチョイ cfda-f2JP)
2022/06/28(火) 09:10:36.27ID:a//tJk240 >>732
solverを使うときのパラメーターの設定の方法が間違ってんじゃない。多分値渡しではなくsetを使うと思うよ。
まずマクロの記録もう使ってなんでもいいからsolverで問題を解いてみて、solverを使うときの正しいVBA の書き方を確認しなさい。
solverを使うときのパラメーターの設定の方法が間違ってんじゃない。多分値渡しではなくsetを使うと思うよ。
まずマクロの記録もう使ってなんでもいいからsolverで問題を解いてみて、solverを使うときの正しいVBA の書き方を確認しなさい。
751デフォルトの名無しさん (アウアウクー MMa3-NnnC)
2022/06/28(火) 09:52:29.46ID:qOxYqvDuM >>698
Ifなんたらかんたらを使わないで
B2になんか文字が入っていたらC2を
B3になんか文字が入っていたらC3を…
をスマートに書くならどう書きます?
https://i.imgur.com/5VtTNti.jpg
Ifなんたらかんたらを使わないで
B2になんか文字が入っていたらC2を
B3になんか文字が入っていたらC3を…
をスマートに書くならどう書きます?
https://i.imgur.com/5VtTNti.jpg
752デフォルトの名無しさん (スップ Sddf-gXkX)
2022/06/28(火) 11:02:29.10ID:1UWi0IGcd753デフォルトの名無しさん (ワッチョイ 3f42-H0HQ)
2022/06/28(火) 11:15:10.25ID:cqDrGvOU0 VBA使わなくてもセルに関数書いときゃいいんじゃね
754デフォルトの名無しさん (アウアウクー MMa3-4pPN)
2022/06/28(火) 12:14:32.96ID:S7aFTH1NM755デフォルトの名無しさん (ワッチョイ 8f21-tCSL)
2022/06/28(火) 17:20:05.57ID:mlWlUbMB0 すみません、神様達、教えてください
エクセルVBAでは
関数内関数はどうやって作れますか?
また複数の関数を目的別に整理する方法として
パッケージやモジュール単位にまとめたり
マップに収納したりはできるのでしょうか?
エクセルVBAでは
関数内関数はどうやって作れますか?
また複数の関数を目的別に整理する方法として
パッケージやモジュール単位にまとめたり
マップに収納したりはできるのでしょうか?
756デフォルトの名無しさん (ラクッペペ MM4f-f2JP)
2022/06/28(火) 17:52:33.73ID:fjXXNeRNM757デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/28(火) 17:59:52.62ID:8yuWSL180 >>756
具体的にやり方を教えてあげなよ
具体的にやり方を教えてあげなよ
758デフォルトの名無しさん (オッペケ Sra3-RiBi)
2022/06/28(火) 18:51:45.14ID:gpLDnVSMr759デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 19:15:28.84ID:+0CREnk7H760デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
2022/06/28(火) 19:22:25.73ID:EFCYXnQm0 ローカル関数もサポートされてないし
関数をオブジェクトとして扱えないので変数への代入も無理です
関数をオブジェクトとして扱えないので変数への代入も無理です
761デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 19:22:27.90ID:+0CREnk7H >>756
標準モジュール単位で関数をまとめればいいってことでしょうか?
標準モジュール単位で関数をまとめればいいってことでしょうか?
762デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 19:29:24.91ID:+0CREnk7H763デフォルトの名無しさん (ワッチョイ cfda-f2JP)
2022/06/28(火) 20:14:33.61ID:a//tJk240 >>761
正解です
正解です
764デフォルトの名無しさん (ワッチョイ cfda-f2JP)
2022/06/28(火) 20:14:53.99ID:a//tJk240 それからモジュールには適当に名前を付けることができますので
765デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/28(火) 20:17:06.37ID:8yuWSL180 関数内関数ってのは、関数の中で定義する関数のこと
phpだと
sub foo1
if a = b then
sub foo2
foo2=1
end sub
else if
sub foo2
foo2=2
end sub
end sub
みたいなことができる
あんまやらんけど
phpだと
sub foo1
if a = b then
sub foo2
foo2=1
end sub
else if
sub foo2
foo2=2
end sub
end sub
みたいなことができる
あんまやらんけど
766デフォルトの名無しさん (ワッチョイ cfda-f2JP)
2022/06/28(火) 20:22:34.06ID:a//tJk240 >>759
関数内関数をそこで書いているようなやり方ではできないけれど、どうしてもやりたければ vbe オブジェクトを定義してそこにコードを書き込むという疑似なやり方はできる。あるいはコードを作成するプロシージャを作成してそのプロシージャを呼び出して引数を渡してコード作った後、そのコードを呼び出すみたいなことはできるのかもしれない。
コードを実行中に別のコードを作成するという経験がないんでエラーが出るかどうかは分からない。
ただ面倒だし見通しも悪くなるんで外側で関数を定義した方が簡単だと思うんだけれどなぜ関数の中で関数を定義したいのでしょうか。
関数内関数をそこで書いているようなやり方ではできないけれど、どうしてもやりたければ vbe オブジェクトを定義してそこにコードを書き込むという疑似なやり方はできる。あるいはコードを作成するプロシージャを作成してそのプロシージャを呼び出して引数を渡してコード作った後、そのコードを呼び出すみたいなことはできるのかもしれない。
コードを実行中に別のコードを作成するという経験がないんでエラーが出るかどうかは分からない。
ただ面倒だし見通しも悪くなるんで外側で関数を定義した方が簡単だと思うんだけれどなぜ関数の中で関数を定義したいのでしょうか。
767デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 20:32:39.05ID:+0CREnk7H768デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 20:42:12.06ID:+0CREnk7H >>765
ありがとうございます
ありがとうございます
769デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 20:50:26.07ID:+0CREnk7H >>766
なぜ関数の中で関数を定義したいのか
すべての関数を同列に記載すると見通しが悪い気がして
例えば数式に関するものなら、calcurationでまとめ
出力に関するものなら、printでまとめ
保存に関するものなら、saveでまとめ
っていうように、目的別、機能別、階層別に関数をまとめると
後で見直したときに分かりやすいかなって
さらにfacadeみたいに間口を作れば
拡張も修正もしやすいかなって思いまして
なぜ関数の中で関数を定義したいのか
すべての関数を同列に記載すると見通しが悪い気がして
例えば数式に関するものなら、calcurationでまとめ
出力に関するものなら、printでまとめ
保存に関するものなら、saveでまとめ
っていうように、目的別、機能別、階層別に関数をまとめると
後で見直したときに分かりやすいかなって
さらにfacadeみたいに間口を作れば
拡張も修正もしやすいかなって思いまして
770デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/28(火) 20:56:44.33ID:8yuWSL180 >>755
>関数内関数はどうやって作れますか?
関数内関数はない
classは貧弱だけど、ある
ただvbaそもそもの概念として、エクセルのスクリプトであるという点がある
あんまり大きなclass作りたいなら、別言語の方が良いと思う
エクセルvbaはゲームとかもキツイ(メインloopが超貧弱でvbaを起動しっぱなしだとよく落ちる)
>また複数の関数を目的別に整理する方法として
>パッケージやモジュール単位にまとめたり
>マップに収納したりはできるのでしょうか?
標準モジュール単位でまとめられるけど・・・
エクセルvbaの標準モジュールは「どのシートにも共通する処理」のような意味合いで用いられる
よくも悪くも、vbaはエクセルのためにあるので
あまり壮大な事をするのには向いていない
>関数内関数はどうやって作れますか?
関数内関数はない
classは貧弱だけど、ある
ただvbaそもそもの概念として、エクセルのスクリプトであるという点がある
あんまり大きなclass作りたいなら、別言語の方が良いと思う
エクセルvbaはゲームとかもキツイ(メインloopが超貧弱でvbaを起動しっぱなしだとよく落ちる)
>また複数の関数を目的別に整理する方法として
>パッケージやモジュール単位にまとめたり
>マップに収納したりはできるのでしょうか?
標準モジュール単位でまとめられるけど・・・
エクセルvbaの標準モジュールは「どのシートにも共通する処理」のような意味合いで用いられる
よくも悪くも、vbaはエクセルのためにあるので
あまり壮大な事をするのには向いていない
771デフォルトの名無しさん (JP 0Ha3-tCSL)
2022/06/28(火) 20:59:53.87ID:+0CREnk7H >>770
class調べてみます!
モジュールとclassが使えれば
見やすいコードかけるかも!
そんな壮大なプログラムを作るつもりなないのですけど
一処理、一関数にしたいとなると
ある程度の単位で処理をまとめていきたいなって
ご丁寧なご解説に感謝です
ありがとう、神様!
class調べてみます!
モジュールとclassが使えれば
見やすいコードかけるかも!
そんな壮大なプログラムを作るつもりなないのですけど
一処理、一関数にしたいとなると
ある程度の単位で処理をまとめていきたいなって
ご丁寧なご解説に感謝です
ありがとう、神様!
772デフォルトの名無しさん (ワッチョイ ff02-tQxS)
2022/06/28(火) 21:13:22.89ID:i28fB/zi0 >>750
アドバイスありがとうございます!
入金消し込みの自動化をせよと上司からの指示で、初心者なりになんとかやってるんですが、会計ソフトの会社でもお手上げな仕組みの売掛金管理のようです。
setとcellsでなんとか、試行錯誤してやってみようと思います!
またわからなくなったら、質問させて頂きます。
アドバイスありがとうございます!
入金消し込みの自動化をせよと上司からの指示で、初心者なりになんとかやってるんですが、会計ソフトの会社でもお手上げな仕組みの売掛金管理のようです。
setとcellsでなんとか、試行錯誤してやってみようと思います!
またわからなくなったら、質問させて頂きます。
773デフォルトの名無しさん (アウアウウー Sad3-/ybv)
2022/06/28(火) 21:26:40.99ID:WQvDBuzoa 十年近くぶりに触るし上級者だったとかじゃないけど
VBAで
今開いてるPhotoshopの選択しているレイヤーを基準にExcelの指定セル範囲(例:A1からA20)を1セルごとにレイヤーを1枚作りセルの中身を文字ツール(テキスト)でレイヤーを作成。
例:ExcelのA1に「あいう」、A2に「えお」、A3に「123」が入力されていたとし、指定範囲選択(A1〜A3)を、開いてるPhotoshopにレイヤー追加しながらテキストレイヤー「あいう」、「えお」、「123」を作る(計3枚)。その際、Excelに近い見た目の形で…この場合、横に少し間隔を空けて「あいう」「えお」「123」が並ぶように作成する。(文字の大きさや色は直前に使ったpxサイズ、色とする)
って出来ますか?
VBAで
今開いてるPhotoshopの選択しているレイヤーを基準にExcelの指定セル範囲(例:A1からA20)を1セルごとにレイヤーを1枚作りセルの中身を文字ツール(テキスト)でレイヤーを作成。
例:ExcelのA1に「あいう」、A2に「えお」、A3に「123」が入力されていたとし、指定範囲選択(A1〜A3)を、開いてるPhotoshopにレイヤー追加しながらテキストレイヤー「あいう」、「えお」、「123」を作る(計3枚)。その際、Excelに近い見た目の形で…この場合、横に少し間隔を空けて「あいう」「えお」「123」が並ぶように作成する。(文字の大きさや色は直前に使ったpxサイズ、色とする)
って出来ますか?
774デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
2022/06/28(火) 21:45:50.92ID:3ZxXgE6I0 いや、関数内関数?
まぁ似たようなものはあるよ。
GOSUBってのが。
ただ、これも負の遺産のひとつだから
あまり使うことはお勧め出来ないけど。
まぁ似たようなものはあるよ。
GOSUBってのが。
ただ、これも負の遺産のひとつだから
あまり使うことはお勧め出来ないけど。
775デフォルトの名無しさん (ワッチョイ 0f93-+tXk)
2022/06/28(火) 21:52:47.26ID:/U22FX/80 gosubは全然違うでしょ
776デフォルトの名無しさん (ラクッペペ MM4f-OnVC)
2022/06/28(火) 22:11:43.10ID:GB8Zx7jKM 関数内関数いわゆる高階関数について、VBA関数には高階関数のための機能は無いけどワークシート関数のLAMBDAが該当する
777デフォルトの名無しさん (ワッチョイ ff68-TsA2)
2022/06/28(火) 22:18:47.50ID:8yuWSL180 確かに!その発想は正解だが・・・だが・・・
778デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
2022/06/28(火) 23:36:42.40ID:EFCYXnQm0779デフォルトの名無しさん (アウアウウー Sad3-DrrO)
2022/06/29(水) 07:26:36.96ID:f9LCV9hba >>776
お前名前に騙されやすいタイプだろw
LAMBDA は単なる関数定義で VBA スレ的にはユーザー定義関数と変わらんぞ
ユーザー定義関数はマクロブックにしか入れられないから LAMBDA が作られた
お前名前に騙されやすいタイプだろw
LAMBDA は単なる関数定義で VBA スレ的にはユーザー定義関数と変わらんぞ
ユーザー定義関数はマクロブックにしか入れられないから LAMBDA が作られた
780デフォルトの名無しさん (ワッチョイ 7fda-eqyh)
2022/06/29(水) 08:15:54.31ID:SMNkprrA0 他のプログラミングと同じだと思われているのかな LAMBDA 関数は
781デフォルトの名無しさん (ワッチョイ 4fda-hyng)
2022/06/29(水) 08:48:09.67ID:sZpGYWcf0 ユーザー定義関数では(コーディング時に)関数を自作することはできるが、(実行中に)関数内で関数を定義したり
(実行中の)関数の引数に関数そのものを与えるたりすることはできない
そもそもユーザー定義関数とLAMBDA関数はまったく別のもの
Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 ~Excel数式が本格的なプログラミング言語に
https://forest.watch.impress.co.jp/docs/news/1387035.html
(実行中の)関数の引数に関数そのものを与えるたりすることはできない
そもそもユーザー定義関数とLAMBDA関数はまったく別のもの
Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 ~Excel数式が本格的なプログラミング言語に
https://forest.watch.impress.co.jp/docs/news/1387035.html
782デフォルトの名無しさん (アウアウウー Sad3-/ybv)
2022/06/29(水) 08:51:20.38ID:GuRBEGnka783デフォルトの名無しさん (ラクッペペ MM4f-OnVC)
2022/06/29(水) 08:55:02.95ID:8rr9zLPCM 関数型パラダイムをサポートしている言語か、最低でもC言語などで関数ポインタを使ったことがある人でないと高階関数の概念は理解が難しい
784デフォルトの名無しさん (アウアウウー Sad3-n9/C)
2022/06/29(水) 10:34:47.30ID:7c8LgVFIa privateで良くないか
785デフォルトの名無しさん (アウアウウー Sad3-DrrO)
2022/06/29(水) 12:27:16.10ID:f9LCV9hba786デフォルトの名無しさん (アウアウウー Sad3-ci0b)
2022/06/29(水) 13:48:20.01ID:Es0nfTu8a 記者がアホなんやで
787デフォルトの名無しさん (ワッチョイ 7fda-eqyh)
2022/06/29(水) 14:05:01.02ID:SMNkprrA0 ネットの記事って怪しかったり間違っているのが多々あるよね
788デフォルトの名無しさん (ワッチョイ 0f7c-+tXk)
2022/06/29(水) 14:22:16.06ID:3IrndTU40 ネットの記事だけがそうだと思ってる?
789デフォルトの名無しさん (ワッチョイ cf49-5iuk)
2022/06/29(水) 14:30:17.44ID:par7A0IW0 はい次の方
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★2 [蚤の市★]
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★3 [597533159]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- オーストラリアで16歳未満はSNS禁止になったらしいけどこれ
- スバルが言ったらノエルが濡れそうなこと
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
