No.1ベストアンサー
- 回答日時:
「Range("A1") = 12345」でA1セルに数字として「12345」が入ります。
「TMP = Split("12345,あいう,abcd", ",")」でTMPに文字列として「12345」が入ります。
つまり、同じものではなくなります。
「If TMP(0) = Range("A1") Then MsgBox "同じ" Else MsgBox "違う"」を、試しに「If TMP(0) = CStr(Range("A1")) Then MsgBox "同じ" Else MsgBox "違う"」とすれば「同じ」と表示されます。
この回答へのお礼
お礼日時:2016/11/08 23:12
ありがとうございます。
実際は比較するものが数字だったり文字列だったりと混在していて、悩んでいました。
CStr関数で解決できました。
No.2
- 回答日時:
こんにちは。
回答は出ていますが、
>TMP = Split("12345,あいう,abcd", ",")
今回は、文字列の中の数字ですから、それはそれでよいとしますが、そうばかりではないので、この種の問題って、悩ませますね。
Split 関数全体が、文字列の切り分けだったはずです。
主に、VBAでは、1次元配列が多いのに、配列の一括変換の時に、Array関数以外は、数値の扱いさせるものはありません。Array関数は、入力が面倒だというのが難点です。
それで、別の質問にありましたが、数値比較の時に、Val関数を使うという方法がありますが、今回は、それも感心しません。
他の方法として、以下のようなものがあります。セルのプロパティからText 値を取る方法です。こういう所で、Rangeオブジェクトのプロパティの違いが出て来るわけです。他にも、Rangeオブジェクトには、いくつかのプロパティが使われます。一度は、こういう部分を研究してみると、後々、重宝します。ただし、やってみないと覚えませんね。
ですから、Rangeオブジェクトというものは、プロパティを省略しないで書くということも、大事なことなのです。
'//
Sub Test1()
Dim tmp As Variant
Dim a, b
Const strTxt As String = "12345,あいう,abcd"
tmp = Split(strTxt, ",")
a = Range("A1").Text
b = tmp(0)
If a = b Then
MsgBox "Same", 64
Else
MsgBox "Wrong", 16
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
VBAのWindowオブジェクトとWork...
-
LISTBOXの内容が更新されま...
-
多人数のじゃんけんプログラム
-
CoCreateInstanceでエラーになる。
-
error C2712: オブジェクト ア...
-
ADO オブジェクトの渡し方
-
EXCEL VBAにて動的にCheckBOXを...
-
JavaScriptからServletに渡した...
-
ExcelVBAでコントロールのイベ...
-
Outlook2007送信前の宛先確認の...
-
時間帯判定をする。
-
JSPのout.printについて
-
インラインフレームがときどき...
-
ワイルドカード<?>と型パラメー...
-
JSPのスレッドセーフについて
-
DirとFSOの違い
-
Dateにnewを付与せず(関数とし...
-
JAVAからHTMLへ値を返す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
vb.net オブジェクト指向につい...
-
COMコンポーネントって何?
-
オブジェクトレベルとメタレベル
-
ビジュアルC++でボタンの有...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト名をforループ内で...
-
Object型からDouble型へのキャスト
-
ADO オブジェクトの渡し方
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
戻り値がクラスオブジェクト
-
VBAでvlookup関数から、別シー...
おすすめ情報