• ベストアンサー

エクセル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

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>(初心者でもないのですが、しばらく遠ざかっていました。) ??? >どう修正したら出来ますでしょうか。 別物になってしまいました 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 参考まで

miruchoko
質問者

お礼

別物でもないです。 シンプル且つ、希望通りの結果になりました。 ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 このようにすればよいのですが、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 ----------------------------------------

miruchoko
質問者

お礼

なるほど。 大変参考になります。 ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>記述上「’」で始まる文字は緑色が付いていますが、 "'" はコメント記号なので、VBEでは着色表示されて当然です。 ワークシートでは全く異なる意味を持つ記号(セル内容を文字列として認識)なので、コメント行が着色表示される事はありません。 VBAのコードをシートに貼り付けても動作しませんよ。 >どう修正したら出来ますでしょうか。 Right関数ではなくてLeft関数を使用して下さい。

miruchoko
質問者

お礼

そうですね。 Leftでした。 ありがとうございました。

関連するQ&A