- ベストアンサー
エクセルVBAで。
お世話になります。 VBA初心者です。 (初心者でもないのですが、しばらく遠ざかっていました。) エクセルVBAの記述内容をコピーし、 エクセルの通常のシートへ貼り付けした際、 記述上「’」で始まる文字は緑色が付いていますが、 通常のシートへ貼り付けした際、黒字になってしまいます。 そこで、下記の様なVBAを記述し、貼り付け後に、 「’」から始まる文字を緑色に着色しようと試みましたが (やはり)うまくいきませんでした。 エクセル関数なんかも織り交ぜたおかしな記述だと思いますが 何となくやりたい事が伝わって頂けるかと思うのですが、 どう修正したら出来ますでしょうか。 ご教授下さいます様、宜しくお願いいたします。 記 Sub 色() Dim y As Integer Dim x As Integer Dim a As Integer mysheet = ActiveSheet.Name For y = 1 To 10 x = Sheets(mysheet).Cells(Rows.Count, y).End(xlUp).Row a = 0 Do Until a > x a = a + 1 If Right(Cells(y, a), 1) = "'" Then Cells(y, a).Select Selection.Font.ColorIndex = 10 End If Loop Next End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>(初心者でもないのですが、しばらく遠ざかっていました。) ??? >どう修正したら出来ますでしょうか。 別物になってしまいました Sub 色() Dim y As Integer Dim x As Integer For y = 1 To 10 For x = 1 To Cells(Rows.Count, y).End(xlUp).Row If InStr(Trim(Cells(x, y).Value), "'") = 1 Then Cells(x, y).Font.ColorIndex = 10 End If Next x Next y End Sub 参考まで
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 このようにすればよいのですが、VBAコードを貼り付けて色付けするには、もう少し複雑に作らなくてはなりません。 '------------------------------------------- Sub TestSample1() Dim rng As Range Dim c As Range On Error Resume Next Set rng = Range("A1:J10").SpecialCells(xlCellTypeConstants, 23) On Error GoTo 0 If rng Is Nothing Then Exit Sub Application.ScreenUpdating = False For Each c In rng If Len(c.Value) > 0 Then c.Font.ColorIndex = xlColorIndexAutomatic If InStr(Trim(c.Value), "'") = 1 Or c.PrefixCharacter = "'" Then c.Font.ColorIndex = 10 End If End If Next c Application.ScreenUpdating = True End Sub ----------------------------------------
お礼
なるほど。 大変参考になります。 ありがとうございました。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>記述上「’」で始まる文字は緑色が付いていますが、 "'" はコメント記号なので、VBEでは着色表示されて当然です。 ワークシートでは全く異なる意味を持つ記号(セル内容を文字列として認識)なので、コメント行が着色表示される事はありません。 VBAのコードをシートに貼り付けても動作しませんよ。 >どう修正したら出来ますでしょうか。 Right関数ではなくてLeft関数を使用して下さい。
お礼
そうですね。 Leftでした。 ありがとうございました。
お礼
別物でもないです。 シンプル且つ、希望通りの結果になりました。 ありがとうございました。