• 締切済み

エクセル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/17068)
回答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

  • 再度・・・エクセルVBAで mod関数

    いつもお世話になっております。 先ほどは意味不明な質問をしてしまい申し訳ありませんでした。 再度質問をさせていただきます。 エクセルVBA初心者のも社会人です。 エクセルシート上にコマンドボタンを作成しました。 そのボタンを押す度に二つの命令を交互に繰り返すVBAの記述を考えています。 コマンドボタンを一回押すとセル"A1"の文字の色が白くなり、もう一回押すとセル"A1"の文字の色が青くなるようにしたいです。 つまりコマンドボタンを奇数回押すとセル"A1"の文字の色が白くなり、偶数回押すとセル"A1"の色が青くなるということです。 あえて論理記述にmodを使わなくてもかまいません。 何に使うのかと思う方もいるかもしれませんが、ご教授のほどをよろしくお願いします。

  • VBA(エクセル)で自動的にボタンをクリックさせるには

    いつもお世話になっております。 下記のことがしたいのですがどうやって良いのかがわからなくって困っております。 やりたいこと。 AブックとBブックが有るとします。(双方ともエクセルファイル) エクセルのVBAで、Aブックのシート上のコマンドボタンを押すと Bブックのシート上のコマンドボタンをクリックするという動きを VBAでさせたいのですがどうしてもクリックさせることができません。 試したこと。 初めは、AのボタンをクリックするとBのボタンをセレクトして SendKeysでENTERを送ってみたりしたのですがうまくいきませんでした。 何かやり方が有りましたら、お教えいただけませんでしょう。 宜しくお願いいたします。

  • フォームボタンクリックでセル色表示

    作業中中断により日付を変更したのかどのボタンまでクリックしたのかがわからなくなります。 A2セルの日付を変更したらB5セルが赤表示、ボタン1をクリックしたらC5セルが青表示、ボタン2をクリックしたらD5セルが緑表示、ボタン3をクリックしたらE5セルが黄表示等どこの作業まで実施したのかわかるようにしたいのですがVBAのコードがお解りになる方よろしくお願いします。

  • エクセル ボタンのVBA 

    印刷のボタンを作成しました。 原本シートに書き込んで終了した時に保存ボタンを押したら シート名を記載して保存するVBAが一個あります それとは別に印刷ボタンを作成したいのですが 原本シートの表には未記入の場所には条件式でセルに色を つける条件を付けてます。 印刷ボタンを押した時 全部のセルの色を白色に戻し指定した範囲の部分を印刷するボタンを作れないでしょうか? 例 A1:K73まで印刷するなど

  • VBA教えて下さい

    VBA教えて下さい。 初心者です。 例えば A1セルに数値を入力して コマンドボタンを押すと B1~B20のセルに全てその数値が反映される その反映された数値は赤色にする これだけならば private sub commandbutton_click() range("B1:B20")=range("A1") range("B1:B20").font.color=vbred でいけますが 私がやりたいのは更に A1に数値を入力して コマンドボタンを押すと B1~B20のセルに全てその数値が反映される その反映された数値は赤色にする しかし、B1~B20のセルのどれかのセルが背景色黄色にした場合 黄色背景色より上のセルはA1に入力された数値は無視し 黄色背景色より下のセルはA1に入力された数値を反映する といった内容です。 どうしてもできません コードを書いてもらえるとすごく助かります。 回答お願いします。

  • エクセルVBAボタンで条件色指定

    お世話になります 都道府県別に訪問者と数量に色を一括に塗りたいのですが(セル) たとえばAボタンBボタンCボタンを3つ作成し Aボタンを押すと東京、大阪は青色に Bボタンは名古屋、札幌を黄色に Cボタンは九州、四国で赤色に |訪問者|数量|場所| |太郎 |1121|大阪| |四郎 |3321|四国| |山田 |3000|札幌| |斉藤 |2000|東京| |無色 |1000|未定| 上記Aボタンを押すと大阪と東京にいる訪問者と数量に青色を塗りたいのです。 Bなら札幌の山田と3000に黄色とセルの色を付けたい 2000列ぐらいあるので一括で希望です。 わかる方ご教授よろしくお願い致します

  • エクセル VBA セルをクリックすると色が変わる

    いつも皆様には大変お世話になっております。 早速ですが、VBAでセルをクリック(もしくはダブルクリック)するとそのセルの色が変わるといったようなマクロが組めるでしょうか。 色を変えたいのは、A1~A4までの4個のうち1個だけなのでA1がクリックされればA2~A4までは『色なし』にしたいのです。 そんなことは出来るでしょうか? よろしくお願いいたします。

  • VBA教えてください

    VBA初心者です A1~A5までのセルは色は白色のセル A6.A7セルの色は赤色の背景のセルです A1~A5までのセルは B~Dのセルに数値を入力するが A6.A7のセルのB~Dまでのセルは 結合してさらに結合したセルに「停止」 の文字を入力します。 私がVBAでやりたいのは 赤い背景のセルだけに反応して 自動でB~Dのセルを結合し 停止の文字を自動入力できるようにしたいです コードを書いてくれると めちゃくちゃ助かります 回答お願いします。

  • Excel VBAでセルの色塗りについて

    VBAの初心者です。 Excel2003であるセル範囲のセルが色Aに塗られています。 今、このセル範囲でセルの値により5つの条件でセルの色を塗り分け て、条件に合致しないものは元の色のままにしたのですが、For Each とCASEステートメントを使ったVBAプログラムを教えて下さい。

  • Excel VBA BeforeDoubleclickについて

    VBA初心者です。 拙いスキルではどうにもならなくて困っております。 お分かりになられる方おられましたら ご教授ください。 _|___A___|___B___|___C___|_ 1| aaa | bbb | ccc 2| ddd | eee | fff 3| 4| --- | +++ | *** 5| ### | $$$ | &&& 6| %%% | ???? | \\\ 7| >>> | <<< | /// 8| 以上のような表がありまして、 セルをダブルクリックした場合、たとえば A4,A5をダブルクリックするたび⇒A1文字列にA4/A5文字列を追加 A6,A7をダブルクリックするたび⇒A2文字列にA6/A7文字列を追加 4~7行目以外をダブルクリック⇒何もしない という動作を各行ごとに実行(A列はA1/A2,B列はB1/B2へと追加) していくことができますでしょうか? サンプルコードなどご教授いただけますと幸いです。 何卒よろしくお願いいたします。

専門家に質問してみよう