重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

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

昨日からVBAに取り組んでいるVBA初心者です
| B |
1|AABB|
2|BCBC|
3|BDBD|
4|AABC|
5|DEDE|

この中から頭がAAのものに色をつけたいのですが
どのようにしたらよいでしょうか?
よろしくお願いします
単純にBBBBの文字列をB列から検索して色をつけるというのは
以下のようでやっていますが先頭文字を指定してそれに該当する
文字列の指定の仕方がわかりません。
どうかよろしくご教授のほどお願いします

Sub testsub()

Dim c As Object
Dim myKey As String, fAddress As String
myKey = "BBBB"
With ActiveSheet.Range("b:b")
Set c = .Find(What:=myKey, LookIn:=xlValues, lookat:=xlWhole, _
SearchOrder:=xlByColumns, MatchByte:=False)
If Not c Is Nothing Then
fAddress = c.Address
Do
c.Interior.ColorIndex = 1 '背景 赤
c.Characters.Font.Color = vbWhite '文字 白
c.Characters.Font.Bold = True '太字
Set c = .FindNext(c)
If c.Address = fAddress Then Exit Do
Loop
End If
End With

'
End Sub

A 回答 (2件)

案として。


findで探さずに、B列を1行目からデータのある最終行まで1個ずつ、
先頭が"AA"かどうかを見て該当するなら背景を赤に換えてます。
やりかたはそれぞれだと思いますが参考になれば良いです。
先頭が"AA"かどうかはleft関数を使い、
If Left(Cells(1 + i, 2).Value, 2) = "AA" Then
で判定しています。(左から2文字を取り出し"AA"か判定)

(サンプルコード)-------------------
Sub TEST()
Dim lastRow, i As Integer
ThisWorkbook.Worksheets(1).Activate
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 0 To lastRow - 1
  If Left(Cells(1 + i, 2).Value, 2) = "AA" Then
    Cells(1 + i, 2).Interior.Color = 255
  End If
Next i
End Sub

この回答への補足

ありがとうございます
ほんとに素人なので試すだけでも時間かかって・・・
とりあえず、サンプルで提示させて頂いた状態ではうまくいきました。
これで全然OKなのですが
本番?用のデータではうまく反映されなくて少してこずっています
もう少しやってみたいと思っております

補足日時:2009/12/04 17:08
    • good
    • 0

本番用ファイルにどう実装されてどこがうまくいっていないか分かればアドバイスできるかも知れませんので、原因不明状態になりましたら言ってください。

    • good
    • 0

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