A1セルに
【GetWindowText(a,b,c)】
と内容が記述してあります。
【現在】
GetWindowText関数の、
「aの部分を反転しフォント色を青にする。」
「bの部分を反転しフォント色を赤にする。」
「cの部分を反転しフォント色を紫にする。」
といったことを手作業でやっております。
【VBAでやりたいこと】
GetWindowText関数の引数、a,b,cをマクロによって、フォント色を付けたいのです。
a…青
b…赤
c…紫
(1)該当セル(A1)の文字列をコピーする
(2)カンマ区切りで、文字を切る
(3)色を付ける
(4)A1セルに埋め込む
みたいなことを考え、挑戦してみたのですがうまくいきませんでした。
ご教授の方よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>【EndDialog(hWnd,0);】という内容が、【A2セル】に記述しています。
Sub macro1r1()
Dim target As Range
Dim a, s, e, t
Set target = Range("A2") 'てきとーに応用してください
s = InStr(target.Text, "(") + 1
e = InStr(target.Text, ")") - 1
t = Mid(target.Text, s, e - s + 1)
a = Split(t, ",")
On Error Resume Next
target.Characters(Start:=s, Length:=Len(a(0))).Font.ColorIndex = 5
target.Characters(Start:=s + Len(a(0)) + 1, Length:=Len(a(1))).Font.ColorIndex = 3
target.Characters(Start:=s + Len(a(0) & a(1)) + 2, Length:=Len(a(2))).Font.ColorIndex = 24
End Sub
keithinさん、ありがとうございます。
目的を満たすことができました。
結構複雑ですね。
ちょっといろいろカスタマイズさせていただきたいと思います。
ありがとうございました。
No.1
- 回答日時:
関数の引数に書式を施す方法はありません。
ご相談の事は不可能です。
#参考?
言わずもがなですが、関数としてじゃなく「関数式の格好をした文字列」をセルに記入し、その一部の文字に書式を施すことは、それは可能です。
当然関数じゃなくタダの文字列ですから、計算とかはしてくれませんが。
あるいはご相談では「関数」と言ってますが実際には関数っぽく見えるだけの、「GetWindowText(a,b,c)」と書かれた単に文字列を処理したいというお話なら。
もしホントにそういう事でよいなら、もちろんふつーに「何文字目から何文字目に色を塗る」の操作を新しいマクロの記録でマクロに録って、だいたいそのまま使えるマクロは手に入ります。
sub macro1()
dim target as range
dim a, s,e, t
set target = range("A1") ’てきとーに応用してください
s = instr(target.text, "(") + 1
e = instr(target.text, ")") - 1
t = mid(target.text, s, e - s + 1)
a = split(t, ",")
target.characters(start:=s, length:=len(a(0))).font.colorindex = 5
target.characters(start:=s + len(a(0)) +1, length:=len(a(1))).font.colorindex = 3
target.characters(start:=s + len(a(0)&a(1))+2, length:=len(a(2))).font.colorindex = 24
end sub
この回答への補足
情報ありがとうございます。
>「GetWindowText(a,b,c)」と書かれた単に文字列を処理したいというお話なら
仰られる通り、「関数式の格好をした文字列」に処理を施したいのです。
ただ、
>「何文字目から何文字目に色を塗る」
これでは、やりたいことが満たせないのです。理由としては、
他に、
【EndDialog(hWnd,0);】という内容が、【A2セル】に記述しています。
よって、
A1セル:【GetWindowText(a,b,c)】と A2セル:【EndDialog(hWnd,0);】では、
【引数の数も異なる】【文字位置も異なるため】
教えて頂いた方法、「何文字目から何文字目に色を塗る」では対応ができないのです。
よって、【,】区切りで、引数文字に色を付けることができればと考えたのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
- Excel(エクセル) 条件付き書式でフォント色を赤に設定しましたが、 2 2023/07/29 14:17
- Word(ワード) Wordの表中の文字を選択した時の白黒反転の違い 1 2023/04/25 12:13
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Excel(エクセル) 【Excel】複数列ごとに取得するセルを変更したい 2 2023/03/23 21:04
- Excel(エクセル) 関数を用いて表示したセルの内容を、見えている形でコピーする方法 2 2022/09/14 16:36
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Jtableの特定のセルの背景色や...
-
Windowsで動くVBAがmacOSで動か...
-
エクセルテキストボックスの文...
-
VBA セルに合わせて移動するが...
-
(VBA)アクティブセルを起点に...
-
VBAについて教えてください。 E...
-
エクセルの表で1年間の曜日を...
-
エクセルでの計算式で求められ...
-
エクセル: セルの枠を超えて表示
-
【エクセル】関数で「A1が0でな...
-
Excelの「0」だけ非表示、小数...
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
Excelで 分:秒 と表示させる...
-
エクセルのパーセンテージで、...
-
日付だけを変更して印刷(Excel)
-
エクセルで表示形式の時刻の「0...
-
エクセルで 何時間何分と表示...
-
複数のセルのいずれかに数字が...
-
セルの塗りつぶしに透明度を設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELマクロ 保護されているシ...
-
VBAで、貼り付け禁止命令を実現...
-
エクセルテキストボックスの文...
-
データが入力されている隣のセ...
-
VBAで丸をつけたいです。
-
ダブルクリックすると現在の時...
-
メッセージを1度だけ表示したい。
-
エクセルVBA セル選択後にカレ...
-
ハイパーリンクされているファ...
-
Excelについて
-
エクセルVBA(実行時エラー438...
-
Windowsで動くVBAがmacOSで動か...
-
Jtableの特定のセルの背景色や...
-
(VBA)アクティブセルを起点に...
-
VBAについて教えてください。 E...
-
VBA セルに合わせて移動するが...
-
セル色を5秒間隔で変える
-
Excel VBA ダブルクリックで入...
-
Excelのセル内にある図形を削除...
-
Excel VBA セルを指定個数ラン...
おすすめ情報