• 締切済み

エクセルVBAでボタンをクリックする度に・・・・

はじめまして。 VBA初心者です。 ボタンをクリックする度にセルの範囲(A1:B40)を赤・白・赤・白 ・・・・と交互に色を付けるにはどのようにしたらよいでしょうか? いまいちよくわかりません。 どなかたご教授くだされば助かります。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 #4の方とかぶりますが、私も、元のご質問がよく分からないですね。 >ボタンをクリックする度に >セルの範囲(A1:B40)を赤・白・赤・白 ・・・・と交互に色を付ける もし、練習なら、ご自身で考えたほうがよいと思います。実用度は低いし、ある程度、VBAの経験のある人なら初歩的ではあっても、経験のない人には、そのような問題は、ループで処理するということを学ばないと難しいです。また、ある程度、勘が働く人なら、ループは使いません。それと、白赤の交互の模様は、一体、どういうものを言っているのか理解していません。 Sub TestMacro1()   With ActiveSheet     If .Range("A1").Interior.ColorIndex = xlNone Then       Range("A1").Interior.ColorIndex = 3       Range("A2").Interior.ColorIndex = xlNone     Else       Range("A1").Interior.ColorIndex = xlNone       Range("A2").Interior.ColorIndex = 3     End If     Range("A1:A2").Copy Range("A1:B40")   End With End Sub Sub TestMacro2()   With ActiveSheet     If .Range("A1").Interior.ColorIndex = xlNone Then       .Range("A1:B2").ClearFormats       Range("A1").Interior.ColorIndex = 3       Range("B2").Interior.ColorIndex = 3     Else       .Range("A1:B2").ClearFormats       Range("B1").Interior.ColorIndex = 3       Range("A2").Interior.ColorIndex = 3     End If     Range("A1:B2").Copy Range("A1:B40")   End With End Sub

urbt86703
質問者

お礼

早速の返答ありがとうございます。 また御礼が遅くなりましてすみません。 はい、おっしゃるとおりです。 ただ、仕事ではつかいません。 ですので実用度は低いかもしれません。 そのため、独学で習得していますが、 自分が必要とするもの以上のスキルが身についていないです。 参考になりました。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

>いまいちよくわかりません。 読むほうが質問の意味が良くわからない。こんなことをする必要を想像しにくいから。(特に仕事関連では) 具体的に書くこと。 ボタンをクリックすると Private Sub CommandButton1_Click() End Sub の中に何をどうコードするか、だが、 >セルの範囲(A1:B40)を赤・白・赤・白 ・・・・と交互に色を付ける とはどういうことか?。 はじめはA1赤、B1は白、A2は白、B2は赤・・として、クリックしたらA1は白、B1は赤、A2は赤、b2は白・・と反転させるということか。 丁寧に質問を書くこと。 Private Sub CommandButton1_Click() Dim cl As Range For Each cl In Range("A1:B10") If cl.Interior.Color = vbRed Then cl.Interior.Color = vbWhite GoTo p1 ElseIf cl.Interior.Color = vbWhite Then cl.Interior.Color = vbRed End If p1: Next End Sub 例のセル範囲をA1:B10にして 当初は1回下記を設定しておいて 赤 白 白 赤 赤 白 白 赤 赤 白 白 赤 赤 白 白 赤 赤 白 白 赤 がクリックのよって 白 赤 赤 白 白 赤 赤 白 白 赤 赤 白 白 赤 赤 白 白 赤 になったが、そういうことか?

urbt86703
質問者

お礼

早速の返答ありがとうございます。 また御礼が遅くなりましてすみません。 確かに仕事で使うものではありません。 そもそも私は仕事ではVBAを必要としておらず、自宅で使っています。 そのためか習得する必要性もとくにありません。 ただ、これからも勉強していきます。 ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.3

VBAはマクロの記録程度ですので すっきりした文をかけませんが Sub 赤白交互に色をつける()     Dim 行1 As Long     Dim 行数 As Long     Dim 列1 As Long     Dim 列数 As Long     Dim n As Long         行1 = Selection.Row     行数 = Selection.Rows.Count     列1 = Selection.Column     列数 = Selection.Columns.Count     For n = 行1 To 行1 + 行数 - 1         Range(Cells(n, 列1), Cells(n, 列1 + 列数 - 1)) _         .Interior.ColorIndex = 3 - (行1 + n) Mod 2     Next n End Sub

urbt86703
質問者

お礼

早速の返答ありがとうございます。 また御礼が遅くなりましてすみません。 初心者の私にはこのような記述でできるのが不思議です。 勉強します。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

下記をボタンに登録する。 Sub test2() cli = Range("A1:B40").Interior.ColorIndex c = 2 - cli c = Not (c) cli = 2 - c Range("A1:B40").Interior.ColorIndex = cli End Sub

urbt86703
質問者

お礼

早速の返答ありがとうございます。 また御礼が遅くなりましてすみません。 このような方法もあるのですね。 どうもありがとうございました。

すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

例えばこんなマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 Sub Macro1()  With ActiveSheet   If .Range("A1").Interior.ColorIndex = xlNone Then    .Range("A1:B40").Interior.ColorIndex = 3   Else    .Range("A1:B40").Interior.ColorIndex = xlNone   End If  End With End Sub シート上に「フォーム」の「コマンドボタン」を配置して、上記マクロをボタンに割り付けてくさだい。(「コントロール」のボタンではマクロの登録方法が違います。この説明は「フォーム」のボタンの説明になります) なお着色の判断はA1セルで行っています。不都合なら変更してください

urbt86703
質問者

お礼

早速の返答ありがとうございます。 また御礼が遅くなりましてすみません。 まさにこれを必要としていました。 助かりました。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A