よろしくお願いします。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
既存のマクロをコンボボックス...
-
Excel マクロ VBA プロシー...
-
Excel2000:Ontimeメソッドで特...
-
一つのTeratermのマクロで複数...
-
EXCELマクロでのThisisWor...
-
エクセルで別のセルにあるふり...
-
エクセルVBAでNAVITIMEを使って...
-
マクロ実行時、ユーザーフォー...
-
#defineの定数を文字列として読...
-
OnTimeを使ったのですが「エラ...
-
VBAパスワードを解除するマクロ
-
毎日指定時刻に自動でエクセル...
-
エクセル マクロ 指定日の指定...
-
エクセルでA1セルに時刻をリア...
-
c言語で言うところの #define
-
エクセルのマクロについて教え...
-
VC++ 2008 EXPRESS "_T"識別子...
-
ExcelのVBA。public変数の値が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
Excel マクロでShearePoint先の...
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
マクロ実行時、ユーザーフォー...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
マクロで空白セルを詰めて別シ...
-
【EXCEL VBA】オートシェイプを...
-
エクセルのマクロをセルの値に...
おすすめ情報