よろしくお願いします。
excel2003でマクロを作っています。
Sheet2のC1、D1、E1にセルを赤く塗りつぶす、赤と入力、カラーインデックスの番号を入力するというマクロを作りボタンに割り当てたいと思います。
全部で色が17色あるので、マクロを17個作らなければならないと思うのですが、なるべく簡略化したいと思います。
そこで下記の「赤」というマクロの中に「色」というマクロを取り込みたいのですが、うまくできませんでした。
どうかマクロの中にマクロを取り込む方法を教えてください。
もし下記のマクロがもっとスマートに出来るようでしたら、それも教えていただけると嬉しいです。
VBAは初心者ですがよろしくお願いします。
Sub 赤()
irobango = 3
ironamae = "赤"
End Sub
Sub 色()
Worksheets("Sheet2").Range("C1").Select
With Selection.Interior
.ColorIndex = irobango
.Pattern = xlSolid
End With
Worksheets("Sheet2").Range("D1").Value = ironamae
Worksheets("Sheet2").Range("E1").Value = irobango
End Sub
No.1
- 回答日時:
マクロは関数と呼ばれるもので、引数で値を渡すことができます。
以下の例では、Sub赤()でセットしたirobango,ironamaeの値がSub 色()に引き継がれます。色()内では、Bango,Nameに値がセットされます。
Sub 赤()
irobango = 3
ironamae = "赤"
Call 色(irobango, ironamae )
End Sub
Sub 色(Bango as Integer, Name as String)
~省略~
Worksheets("Sheet2").Range("D1").Value = Name
Worksheets("Sheet2").Range("E1").Value = Bango
End Sub
回答ありがとうございます。
Callというのを入れれば良いのですね。
VBAの参考書を何冊か調べながらなんとかここまで作ってみたのですが、参考書の例が私には難しすぎてCallの意味が理解できていませんでした。
ありがとうございました。
No.2ベストアンサー
- 回答日時:
とりあえず,下記でどうですか?
オリジナルからほとんど修正してませんけど。
ついでに青だけ作ってみました。
Dim Irobango, Ironame
Sub 赤()
Irobango = 3
ironamae = "赤"
Call 色
End Sub
Sub 青()
Irobango = 5
ironamae = "青"
Call 色
End Sub
Sub 色()
Sheets("Sheet2").Select
Range("C1").Select
With Selection.Interior
.ColorIndex = Irobango
.Pattern = xlSolid
End With
Worksheets("Sheet2").Range("D1").Value = ironamae
Worksheets("Sheet2").Range("E1").Value = Irobango
End Sub
回答ありがとうございます。
昨夜、お礼の投稿の途中でビジー状態で接続できないというメッセージが何度も出てしまい、お礼が遅くなってしまいました。すみませんでした。
お陰で思い通りの結果になりました。
ありがとうございました。
No.3
- 回答日時:
ご質問の例では、「赤プロシージャ」は、要りません。
変数irobango、ironameを定数にすればよいのです。
(修正例)
Public Const irobango As Integer = 3, ironamae As String = "赤"
Sub 色()
Worksheets("Sheet2").Range("C1").Select
With Selection.Interior
.ColorIndex = irobango
.Pattern = xlSolid
End With
Worksheets("Sheet2").Range("D1").Value = ironamae
Worksheets("Sheet2").Range("E1").Value = irobango
End Sub
尚、マクロ中に別プロシージャを呼び出す方法は、「プロシージャ名 (引数1) (引数2) …」となります。
又、ユーザー定義関数(functionプロシージャ)では、「計算式 … = ユーザー定義関数名(引数1,引数2) …」となります。(ワークシート上でも同様。)
何れも、引数は任意です。
No.4
- 回答日時:
#3です。
先の回答を取り消します。
貴方のマクロを取り敢えず修正したものでした。
作業全体からすると、他の方法があるように思えます。
セルに入力されたデータに応じて、色づけを行っているのでしょうか?
補足をお願いします。
2度も回答ありがとうございます。
まとめてこちらでお礼をさせて頂きます。
昨夜、お礼の投稿の途中でビジー状態で接続できないというメッセージが何度も出てしまい、お礼が遅くなってしまいました。すみませんでした。
最終的には、17色それぞれのボタンを作り、クリックすると今回の塗りつぶし、赤、3と入力の動作をし、更に別なシートに条件により範囲が変わる複数のセル範囲を塗りつぶすとしたいのです。
「3と入力」に続くマクロは何とか作ってみましたので、今回教えていただいたマクロ「赤」に組み込めばできるのかな…と考えておりました。
本当は「3」の入力は必要ないのですが、マクロが長くなり過ぎてわからなくなりそうなので、一度ここまでのものを作ってみようと考えたのでした。
こんな説明でわかって頂けるでしょうか。
うまい方法があればご教授ください、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで別のセルにあるふり...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
Excel2013 VBA マクロ実行中に...
-
エクセルに張り付けた写真のフ...
-
IF関数を使ってマクロを実行さ...
-
Excel 改ページのVBAうまくい...
-
エクセルのマクロについて教え...
-
ExcelVBA 図形をクリックした...
-
EXCELのVBAでRange("A1:C4")を...
-
Excelのマクロについて教えてく...
-
有効数字N桁のマクロについて
-
MSアクセスのマクロ・モジュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報