| 
    
     |  | >手動でセルの書式を『文字列』とした場合は、 >うまくいったのですが、VBAでやるとダメですね
 
 これも検証が甘かったです・・・
 
 Jakaさんが書かれているのが正しいと思います。
 (自分もExcel2000)
 書式が文字列のセルに入力された 1 は文字列になりますね。
 
 新規WorkSheetでSample → Test と実行してみてください。
 この2つのデータの違いを判別する方法は、
 自分にはわかりません。
 
 接頭辞が付いてるのかと思ったのですが、
 .PrefixCharacterで見ても判別できません。
 
 VBWASURETAさんのコードを参考にしてください。
 
 Sub Sample()
 With ActiveSheet
 .Range("A1:B1").NumberFormatLocal = "@"
 .Range("A1").Value = 1
 .Range("B1").Value = "1"
 End With
 End Sub
 
 Sub Test()
 Dim v1 As Variant
 Dim v2 As Variant
 
 With ActiveSheet
 v1 = .Range("A1").Value
 v2 = .Range("B1").Value
 End With
 MsgBox "A1:" & TypeName(v1)
 MsgBox "B2:" & TypeName(v2)
 End Sub
 
 |  |