- ベストアンサー
エクセルVBA:マクロの中にマクロ?
度々よろしくお願いします。ボタンが複数あって、それぞれに記録されたマクロの一部分が共通している場合の処理について教えてください。 例えば、前回の質問でご回答いただいたモノを流用し、別の処理と複合させたマクロがあります。 この変数ixがボタン(それぞれのマクロ)ごとに異なる場合、Do While以下を別のマクロとして記録し、それぞれのマクロの中で Application.Run "TEST.xls!Macro1"などのようにできるのでしょうか?変数の扱いをどうして良いのかわかりません。 Sub test() ~別の処理 ix = 8 Do While Cells(ix, "D") <> "" Select Case Trim(Cells(ix, "D")) Case "背筋" Range("AZ8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) Case "アーム" Range("BA8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) Case "レッグ" Range("BB8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) End Select Range(Cells(ix, "I"), Cells(ix, "AW")).Copy Cells(ix, "I").PasteSpecial Paste:=xlPasteValues ix = ix + 1 Loop Range("I8").Select End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1さんのように変数渡しにするか、以下のように共通で使用可能な変数として定義するのがいいでしょう。 Dim ix As Long '共通で使用したい変数はモジュールの冒頭で定義します。 Sub test() ix = 8 Call kyotsu1 '使用する共通コードの呼び出し Range("I8").Select End Sub Sub kyotsu1 Do While Cells(ix, "D") <> "" Select Case Trim(Cells(ix, "D")) Case "背筋" Range("AZ8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) Case "アーム" Range("BA8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) Case "レッグ" Range("BB8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) End Select Range(Cells(ix, "I"), Cells(ix, "AW")).Copy Cells(ix, "I").PasteSpecial Paste:=xlPasteValues ix = ix + 1 Loop End Sub
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
sub Run1() dim Line as long line=8 call Test(line) 'Test を呼び出して、ix に Line の値を渡す。 end sub sub Test(ByVal ix as long) range("Sheet1").select Select Case Trim(Cells(ix, "D")) Case "背筋" Range("AZ8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) Case "アーム" Range("BA8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) Case "レッグ" Range("BB8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW")) End Select Range(Cells(ix, "I"), Cells(ix, "AW")).Copy Cells(ix, "I").PasteSpecial Paste:=xlPasteValues end sub
お礼
ありがとうございました。このような方法で呼び出すのですね。感謝しております。
お礼
たびたびありがとうございます。なるほどスッキリしますね。これからもよろしくお願いします。