• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA教えてください)

VBA初心者のための赤いセルに反応する結合コード

このQ&Aのポイント
  • VBA初心者の方から、赤いセルの背景色に反応して、C~Eのセルを結合して文字を入れるVBAコードについて質問があります。
  • 現在のコードでは、10/5の結果以外は正しく動作しているようですが、9~11のセルが結合されない問題があります。
  • 質問者は、10/1と同様の結果を得るためにコードを修正したいとしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (780/1631)
回答No.2

上記のプログラムでは、横にしかつながりません。C3からE5は、プログラム実行前からつながっていたのではないですが。 この場合、赤が出て来たら、場所を記憶し、赤でなくなったら、処理をすべきです。 また、"A1:E11" となっていますが、これだと、5回処理がされます。やるなら、"A1:A11"にすべきです。Eが全角文字になっているのも気になります。Range を使うより、数値型変数を使う方がいいと思います。 それと、プログラムの頭で、C~Eをきれいにすべきです。そうしないと、2回目に動かしたときに、途中で止まります。 画像は、写真で撮ったみたいですね。PrintScreen ボタンを押せば、画像かコビーされます。Paint を開き、ペーストすればきれいな画像が取れます。あとはトリミングして下さい。 ' Option Explicit ' Sub Macro1() '   Dim iy As Long   Dim iyw As Long '   Columns("C:E").MergeCells = False   Columns("C:E").ClearContents '   For iy = 3 To Cells(Rows.Count, "A").End(xlUp).Row + 1 '     If Cells(iy, "A").Interior.ColorIndex = 3 Then '       If iyw = 0 Then         iyw = iy       End If     Else '       If iyw > 0 Then         Cells(iyw, "C").Resize(iy - iyw, 3).Merge         Cells(iyw, "C") = "停止"         iyw = 0       End If     End If   Next iy End Sub

kousukebojto
質問者

お礼

回答ありがとうございます。 思った通りの結果がでました! ベストアンサーNO.3の方と悩みましたが 早く回答下さったNO.2の方にしました! 丁寧にありがとうございました!

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答No.2様が仰っておられる様に、質問者様のVBAでは横方向にしか結合されません。  背景色が赤色になっているセルを、変数型がRangeとなっている単一の変数の中に次々とまとめて格納して行き、最後に「その変数内に格納されているセルが存在する全ての行」と「C列~E列の列範囲」が交差するセル範囲を、まとめて結合してやれば良いのです。 Sub QNo9246413_VBA教えてください() Const hani As String = "A1:E11" Const MergeColumns = "C:E" Dim rng As Range, myRange As Range For Each rng In Range(hani) If rng.Interior.ColorIndex = 3 Then If myRange Is Nothing Then Set myRange = rng Else Set myRange = Union(myRange, rng) End If End If Next rng Set myRange = Intersect(myRange.EntireRow, Range(MergeColumns)) Application.DisplayAlerts = False myRange.Merge Application.DisplayAlerts = True myRange.Value = "停止" End Sub

kousukebojto
質問者

お礼

回答ありがとうございます。 コードを試したところ思った通りの結果がでました! NO.2の方と違ったコードでもいけるという別のやり方でもいけるということも学べました。 ありがとうございます!

  • akauntook
  • ベストアンサー率19% (295/1481)
回答No.1

>VBA初心者です でしょうね。 このカテゴリーはVisual Basic あなたが言っているのはVBA ( Visual Basic for Applications) 名前は似ているけど違うものです。 https://digitalfan.jp/75548 とりあえず、このあたりで。 >VBA初心者です [技術者向] コンピューター 技術者だとそれで金もらってるってことなんで、丸投げならばやらないことはないですけど、お金下さいねってなります。 そもそも、技術者じゃないのになんでこのカテゴリー選んだのか。意図的なんだとしたらあまりいい気はしません。 ただ、学びたい気持ちの人なら応援するつもりはあります。 http://www.officepro.jp/excelvba/ 一通りやってみるといいです。

kousukebojto
質問者

お礼

すいません わざわざありがとうございます。 サイトを参考にして勉強します。

関連するQ&A

専門家に質問してみよう