A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
検索のプログラムがうるさいだけで、後はCharacters関数を使うだけ。
コードの最初のWEBの記事は参考までに挙げます。Sub Macro1()
'http://park7.wakwak.com/~efc21/cgi-bin/exqaloung …
Dim fc As Range
Dim fd As Range
Dim frst As String
Dim i
i = 1
Range("A1").Activate
Set fc = Range("A1:F30").Find(What:="1234", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False)
If fc Is Nothing Then
Else
frst = fc.Address
'MsgBox "第" & i & frst
p = InStr(fc.Value, "1234")
fc.Characters(Start:=p, Length:=4).Font.ColorIndex = 3
i = i + 1
fc.Next.Activate
End If
Do
Set fd = Range("A1:F30").FindNext(After:=ActiveCell)
'MsgBox "第" & i & fd.Address
p = InStr(fd.Value, "1234")
fd.Characters(Start:=p, Length:=4).Font.ColorIndex = 3
i = i + 1
'MsgBox frst
fd.Next.Activate
Loop While fd.Address <> frst
End Sub
("A1:F30"の辺りや1234は修正のこと。
見つからない場合の対処が甘いかも。補充してください。
元の字の色は変えないことをテスト済み。
No.2
- 回答日時:
一旦黒に戻したあと、置換後の文字列をパターンマッチングで切り分けて、赤に設定するのはどうでしょうか。
○、△、×の実際が分かりませんので、下記がそのまま通用するかどうかは分かりませんが。詳細は「VBA 正規表現」で検索してください。複雑な事をしているので、処理時間はそれなりにかかります。
Sub test()
Dim i As Long
Dim targetString As String
Dim startPos As Long, myLength As Long
Dim myCell As Range
Set myCell = Range("A1")
myCell.Font.ColorIndex = 0 '一旦すべて黒に戻す
targetString = searchWord(myCell.Value, "[A-Z]{2}-\d-[A-Z]-\d-")
If targetString = "" Then Exit Sub
startPos = InStr(myCell.Value, targetString)
myCell.Characters(Start:=startPos, Length:=(Len(targetString) + 2)).Font.ColorIndex = 3
End Sub
Private Function searchWord(targetString As String, matchString As String) As String
Dim regEx As Variant, Matches As Variant, match As Variant
Set regEx = CreateObject("VBScript.RegExp")
regEx.MultiLine = False
regEx.Pattern = matchString
regEx.IgnoreCase = False
regEx.Global = False '一個見つかったら終了
Set Matches = regEx.Execute(targetString)
If Matches.Count > 0 Then
searchWord = Matches.Item(0)
Else
searchWord = ""
End If
Set Matches = Nothing
Set regEx = Nothing
End Function
No.1
- 回答日時:
たとえばセルA2の5文字目から4文字を赤にするコードはつぎでできます。
Cells(2, 1).Characters(Start:=5, Length:=4).Font.Color = RGB(255, 0, 0)
対象文字列のセル内での位置を取得して指定変更する
でいかが?
この回答への補足
すいません。マクロについては初心者でして、できればどのようにコードを組み合わせるべきかも教えていただけないでしょうか。
具体的にやりたいことは、
「△△(←黒)AW-2-1-○○(←赤) ××(←黒)」
↓
「△△(←黒)AW-2-S-1-○○(←赤) ××(←黒)」
というように、「S-」を挿入したい場所が「2-」と「1-」の間であることは固定なんですが、△や○や×は文字数も内容もセルによってことなる感じです。フォントの色を変えずに置換をかけるようなマクロはやはり難しいのでしょうか…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvデータ ダブルクォーテ...
-
csvデータのダブルクォーテーシ...
-
VBA 置換文字がみつからない時
-
xmlファイル内の文字列置換
-
ファイルへの追加書き込みについて
-
特定の列のみ置換を行いたい
-
スペースで区切られた氏名から...
-
テキストボックスの文字列を置...
-
【Excel VBA】文字列の置換作業...
-
c# ビルド直前にコードを置換で...
-
対称群はなぜそう呼ばれるので...
-
Eclipse 改行後のタブ
-
複数のパワーポイントファイル...
-
CreateFileしてからtruncate
-
document.referrer防御
-
PowerShellでテキストの空白行...
-
SQL IIF と REPLACE のやりかた
-
各項目がダブルクォーテーショ...
-
バッチファイルの処理が実際の...
-
マクロ超初心者です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
各項目がダブルクォーテーショ...
-
正規表現で、特定の文字列を含...
-
csvデータ ダブルクォーテ...
-
スペースで区切られた氏名から...
-
正規表現 特定の文字列を含む行...
-
○文字目に文字挿入
-
C#で空白行を削除する方法
-
EXCEL警告「置換対象のデータが...
-
Excel・ユーザーフォームの情報...
-
ハングルを日本語に置換
-
秀丸エディタで、「-」や「ー」...
-
EXCEL VBA でCTRL+Fのダイア...
-
xmlファイル内の文字列置換
-
csvデータのダブルクォーテーシ...
-
C言語でテキストファイルの内容...
-
テキストボックスの文字列を置...
-
Eclipse 改行後のタブ
-
特定の列のみ置換を行いたい
-
パワーポイントの一括置換:複...
おすすめ情報