教えて! goo のコンテンツに対する取り組みについて

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

gooドクター

A 回答 (5件)

例えばこんなマクロを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セルで行っています。不都合なら変更してください
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/19 09:28

こんにちは。



#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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/19 09:41

>いまいちよくわかりません。


読むほうが質問の意味が良くわからない。こんなことをする必要を想像しにくいから。(特に仕事関連では)
具体的に書くこと。
ボタンをクリックすると
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回下記を設定しておいて
赤 白
白 赤
赤 白
白 赤
赤 白
白 赤
赤 白
白 赤
赤 白
白 赤
がクリックのよって
白 赤
赤 白
白 赤
赤 白
白 赤
赤 白
白 赤
赤 白
白 赤
になったが、そういうことか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/19 09:36

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/19 09:32

下記をボタンに登録する。



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/19 09:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング