電子書籍の厳選無料作品が豊富!

VBAで対象範囲の背景色が黒の部分のみ"-"をいれるという処理をしたいのですが、ループがうまく動いておらず最初のセルのみ"-"が入った状態です。
※対象範囲のセルは3列ずつ結合されています

コードは以下になります。VBA初心者のため、初歩的な質問かもしれませんがご回答よろしくお願いいたします。

Private Sub CommandButton1_Click()
Dim C As Range
Sheets("sheet1").Select
T33:BA74 の範囲を1セルずつ繰り返す
For Each C In Range("T33:BA74")
セルが黒のとき
If C.Interior.ColorIndex = 1 Then
C.Value = "-"
end If
'次のセルへ
Next
End Sub

A 回答 (4件)

A1:F10の範囲で、



[A1+B1][C1+D1][E1+F1]
[A2+B2][C2+D2][E2+F2]

[A10+B10][C10+D10][E10+F10]

というようにセルを結合して、[E3+F3][A4+B4][C6+D6]を黒くして、

Dim C As Range
For Each C In Range("A1:F10")
If C.Interior.ColorIndex = 1 Then
C.Value = "-"
End If
Next

を試してみたところ、黒いセルのすべてに"-"が入りましたよ。
    • good
    • 0
この回答へのお礼

ありがとうございました(*Θ_Θ*)
解決しました

お礼日時:2008/06/19 17:34

セルを結合して結合されている2番目3番目のセルを参照するような場合を想定しているのでしょうか



それならユーザー関数を使って左肩のセルを取り出してやればいいように思います

Function GetTopLeftCell( r as Range) as Range
  if r.MergeCells = false then
    ' 結合していないので そのままrを返す
    Set GetTopLeftCell = r
  else
    Set GetTopLeftCell = r.MergeArea.Reange("A1")
  end if
End Function
    • good
    • 0
この回答へのお礼

左肩のセルを取り出す関数があるんですね!

これで左肩のセルをT33:BA74 の範囲でループさせることは可能でしょうか?

お礼日時:2008/06/19 16:49

結合範囲の最初のセルにしか"-"入らない、ということですが、どのようなことで困っていますか?


結合しているんだから、最初のセル以外に何かが入っていたとしても、見えませんよね?

この回答への補足

私の説明がたりなかったようです。

このプログラムではT33:BA74 の範囲の黒い部分の最初のセルしか"-"が入らないといういう意味です。

分岐条件(If C.Interior.ColorIndex = 1)を満たし、次の結合セルに移動してくれないということです。

このような説明で大丈夫でしょうか?

補足日時:2008/06/19 16:35
    • good
    • 0

これはExcelの仕様のようですよ



A1:C1に 『1』『1』『1』と入力して セルの結合をしてみてください
アラートが出ると思います
その文言の中に『左上のセルのデータのみ保持されます』とあります
つまり A1セル以外のデータは削除されてしまいます
このアラートで OKを押してから
A10セル選択 =A1、B10を選択 =B1、C10を選択 =C1 と入力
結果は 『1』『0』『0』になると思います
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
指摘いただいたとおりでした。

ではVBAで結合セルの処理は不可能ということでしょうか?

お礼日時:2008/06/19 13:13

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