プロが教えるわが家の防犯対策術!

Sub t()
Dim s As String

Range("A1").Value = "'あああ"
s = Left(Range("A1").Value, 1)
Debug.Print Asc(s)
End Sub

を実行すると、「あ」の文字コードの-32096が返ってきます。

「‘」に対する39が返ってきてほしいのですが
Range("A1").Value = "''あああ"
こういう状態でセルに値が入ってないと無理なのでしょうか?

シングルコーテーションが1つ入ってても
それを一文字として認識させたいのですがエクセルでは不可能ですか?

A 回答 (1件)

こんばんは。



Range("A1").Value = "'あああ"
s = Left(Range("A1").Value, 1)

セルに、「'」を代入すれば、書式の接頭辞にキャストされてしまいます。数式バー上では見えていますが、それは、文字列関数では取り出せません。この書式文字、VBAでは、PrefixCharacter というプロパティで表せられます。

言い換えれば、セルに代入した書式文字は、文字列ではありません。
以下のようなスタイルになるかと思います。

Sub Test1()
 Dim s As String
 With Range("A1")
  .Value = "'あああ"
  If .PrefixCharacter <> "" Then
   s = .PrefixCharacter
  Else
   s = Left(.Value, 1)
  End If
 End With
 Debug.Print Asc(s)
End Sub
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2013/03/10 08:44

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