アプリ版:「スタンプのみでお礼する」機能のリリースについて

A1セルに
【GetWindowText(a,b,c)】
と内容が記述してあります。

【現在】
GetWindowText関数の、
「aの部分を反転しフォント色を青にする。」
「bの部分を反転しフォント色を赤にする。」
「cの部分を反転しフォント色を紫にする。」
といったことを手作業でやっております。

【VBAでやりたいこと】
GetWindowText関数の引数、a,b,cをマクロによって、フォント色を付けたいのです。
a…青
b…赤
c…紫

(1)該当セル(A1)の文字列をコピーする
(2)カンマ区切りで、文字を切る
(3)色を付ける
(4)A1セルに埋め込む

みたいなことを考え、挑戦してみたのですがうまくいきませんでした。

ご教授の方よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

keithinさん、ありがとうございます。

目的を満たすことができました。
結構複雑ですね。

ちょっといろいろカスタマイズさせていただきたいと思います。
ありがとうございました。

お礼日時:2012/07/27 18:38

関数の引数に書式を施す方法はありません。


ご相談の事は不可能です。



#参考?
言わずもがなですが、関数としてじゃなく「関数式の格好をした文字列」をセルに記入し、その一部の文字に書式を施すことは、それは可能です。
当然関数じゃなくタダの文字列ですから、計算とかはしてくれませんが。
あるいはご相談では「関数」と言ってますが実際には関数っぽく見えるだけの、「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);】では、
【引数の数も異なる】【文字位置も異なるため】
教えて頂いた方法、「何文字目から何文字目に色を塗る」では対応ができないのです。

よって、【,】区切りで、引数文字に色を付けることができればと考えたのです。

補足日時:2012/07/23 22:13
    • good
    • 0

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