• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロについて教えてください)

エクセルのマクロで黄色いセルの数を表示させたい

このQ&Aのポイント
  • エクセルのマクロを使用して、黄色いセルの数を表示させる方法について教えてください。行11から各行にひとつずつ、黄色いセルが含まれていますが、その黄色いセルの中の数字を列Iに表示させたいです。
  • 提供されたマクロを貼り付けても正しく動作しないため、正しいマクロの作成方法について教えてください。
  • 黄色いセルの中の数字を列Iに表示させるためのエクセルのマクロを教えてください。

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

  • ベストアンサー
回答No.2

こんにちは。 #1さんと大差ないですが、こんな感じです。こちらは、しばらく、条件付き書式になっていることに気が付かなかったです。これは、質問文に書いてくださるようにお願いします。必ずしも、外部のファイルをダウンロードするとは限りませんから。 '// Sub ColorCheck()  Const TgLeftUp = "C11" '<--対象範囲左上セル指定  Const vCOL = 9 '値を貼り付ける列  Dim cSTART As Range  Dim rng As Range  Dim c As Range  Dim i As Long  Set cSTART = Cells(Range(TgLeftUp).Row, vCOL)  Set rng = Range(cSTART, Cells(Rows.Count, vCOL - 1).End(xlUp))  Application.ScreenUpdating = False  For Each c In rng   i = WordsChecker(c.Text)   If i > 0 Then    Cells(c.Row, vCOL).Value = Cells(c.Row, i).Text   End If  Next c  Application.ScreenUpdating = True  MsgBox "値 貼り付け完了。", vbInformation  Set rST = Nothing End Sub Function WordsChecker(arg1 As Variant) 'セルの内容が変わったら一意の語を抽出して、変更してください。  If InStr(1, arg1, "遅刻し", 1) Then ret = 3 '列数  If InStr(1, arg1, "予約時間後検査", 1) Then ret = 5  If InStr(1, arg1, "予約時間よりも早く", 1) Then ret = 6  WordsChecker = ret End Function 今回のように条件付き書式そのもので判定することは、不可能に近いことです。VBAでは、条件付き書式の色の判定そのものは、とてもややこしいからです。わざわざ、条件付き書式で求めるよりも、最初から、H列目の文言を含めて、マクロの表示にしてしまえば、全部が一気に出来上がります。条件付き書式と同じようオンタイム(イベント・ドリブン型)で、色塗りも可能です。

0716100555
質問者

お礼

こんににちは! 条件付書式のことを書いておらず申し訳ありませんでした。 大変勉強になりました。 お蔭様で表を完成させることができました。 有難うございました!!!

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! せっかくコードをお考えなのに余計なお世話かもしれませんが・・・ Sub test() Dim i As Long Dim j As Long Dim k As Long Dim cL As Long Dim myArray As Variant myArray = Array("遅刻", "開始", "実施") '←H列に含まれる条件を格納 For i = 11 To Cells(Rows.Count, 1).End(xlUp).Row For k = 0 To UBound(myArray) If InStr(Cells(i, 8), myArray(k)) > 0 Then j = k End If Next k Select Case j Case 0 cL = 3 Case 1 cL = 5 Case Else cL = 6 End Select If cL = 5 Then Cells(i, 9).NumberFormatLocal = "[m]" Else Cells(i, 9).NumberFormatLocal = "G/標準" End If Cells(i, 9) = Cells(i, cL) Next i MsgBox "処理が終了しました。" End Sub ※ じっくり考えればもっと早く処理ができる方法があるかもしれません。 こんなんで参考になりますかね?m(_ _)m

0716100555
質問者

お礼

こんばんは!回答いただき有難うございます!! 余計なお世話でないですよ!すごく助かりました! おかげさまで無事表示させることができました。 勉強になりました。

関連するQ&A