Excel-VBA初心者です。初歩的なことをお聞きします。以下のプログラムで、2)の場合がエラーにならないのは何故でしょうか。引数は文字列データである必要があると思うのですが、数字でもエラーが出ません。本来は型変換をする3)が正しいと思うのですが...。お詳しい方、解説お願いいたします。
------------
Sub test()
Dim str As String
Dim num As Long
str = "あいうえお"
num = 100
'1)
MsgBox "str:" & str
'2)
MsgBox "num:" & num
'3)
MsgBox "CStr(num):" & CStr(num)
End Sub
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
着眼点が素晴らしいと思います。
ご指摘の通り 3) の明示的に型変換した記述が最良だと私も考えていますし、普段から明示的な型変換をした記述を私は心掛けています。MsgBox 関数は言語の機能ですが、暗黙の型変換は Microsoft 社製 Excel の持つ機能です。そのため VBA をサポートする Excel 互換の他社製ソフトでは暗黙の型変換機能が無いため 2) はエラーになります。
また、暗黙の型変換を特にループ内で多用すると顕著に処理が遅くなります。こちらの方が実例としては多いので取り上げますが、ありがちな例は Renge オブジェクトの Cells プロパティーを使ったケースで
Cells(1, "A")
と記述した場合です。リファレンス上、引数には数値が指定されていますが、列番号では何列目なのか分かり難いからと言う理由で文字列で指定する方がほとんどだと思います。この場合、暗黙の型変換機能が働き、数値に型変換してから実行されますので、暗黙の型変換の回数が多ければ多いほど実行速度が遅くなっていきます。
私の場合はループ手前で
Const A As Long = 1
と記述しておき、ループ内で
Cells(1, A)
と記述しています。
Microsoft 社製 Excel で暗黙の型変換を使うのは間違った事でも悪いことでもありませんし、否定をするつもりもありません。存在する機能ですから使っていただいても何も悪くはありませんし、難しい事は考えずに動けば良いと考える方もいらっしゃいます。最終的には記述する方の考え方次第なので。
暗黙の型変換機能を使う場合は、使っていると言う意識が有りさえすれば、それで良いと思います。失礼しました。
No.4
- 回答日時:
No.2
- 回答日時:
「暗黙の型変換」とか「自動型変換」と呼ばれる機能が働いたから。
>"num:" & num
&演算子により文字列の結合であると解釈できるので処理系がnumを文字列に変換したのでしょう。
No.1
- 回答日時:
「暗黙の型変換」というものがあって、特定の条件が揃ったときに自動で型変換されます。
MsgBox "num:" & num
は
MsgBox "num:" & CStr(num)
という暗黙の変換がおこなわれています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBAに関して 2 2023/11/09 20:57
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) マクロについて教えてください。 下記のマクロは以前教えて頂いたマクロです。 マクロを実行すると 指定 6 2024/01/17 17:50
- Visual Basic(VBA) Excelセルに入力された文字の色を変える方法を教えてください 2 2023/12/10 07:42
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
Sub 要具ライフ() ActiveSheet.Cells.Find(what:=TOPゴム")."
Visual Basic(VBA)
-
-
4
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
5
VBAのコードを教えてください
Visual Basic(VBA)
-
6
エクセルVBAにて =A1=B1とすれば A1とB1のセル内容が一緒だった場合 TRUE 違っていれ
Visual Basic(VBA)
-
7
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
8
Cellsのコードが打てません
Visual Basic(VBA)
-
9
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
10
エクセルの合計を自動で表示させたいです
Visual Basic(VBA)
-
11
VBのWPFとはなんでしょうか?
Visual Basic(VBA)
-
12
VBA初心者 Ctrl+での操作、ボタンに登録での操作
Visual Basic(VBA)
-
13
現在のブックを閉じないで、マクロ抜きの(現在のブックの)コピーを作成したい
Visual Basic(VBA)
-
14
VBAに関して
Visual Basic(VBA)
-
15
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
16
引数に数値、文字列の混在
Visual Basic(VBA)
-
17
VBAコードについて
Visual Basic(VBA)
-
18
テキストファイルのファイル名を抽出してBAT処理する方法はありますか。
その他(プログラミング・Web制作)
-
19
Excelで「Ctrl+c」、「Ctrl+v」等をまとめた物
Visual Basic(VBA)
-
20
Excel2010で、今の、Excel2021 365のように、関数増やす機能ないですかね?追加で。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
Excel-VBAのmsgBox()の不思議
-
変換のプログラムを教えてくだ...
-
tex 郵便記号のだしかた
-
英数文字列のうちの数値を4桁に...
-
シフトJISのCSVファイルをUFT-8...
-
c++でドル円変換のプラグラム...
-
分を時間に変換するプログラム
-
魚眼レンズの画像処理
-
画像ファイルから.icoフォーマ...
-
画像ファイル変換(Tiff→PDF)
-
bmp→jpgに、jpg→bmpに
-
StrConvの使い方について教えて...
-
英単語をカタカナに変換するス...
-
C++からCへのソース変換について
-
VC++2005で、CString型に16進...
-
シーケンサのCPUはニーモニック...
-
ローマ字の出し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
10進数をBCDに変換する方法
-
bmp→jpgに、jpg→bmpに
-
なぜ通信には16進数文字列が使...
-
画像ファイル変換(Tiff→PDF)
-
シフトJISのCSVファイルをUFT-8...
-
分を時間に変換するプログラム
-
【EXCEL】カナ、ひらがなを英字...
-
C/C++→JAVAに変換するツール
-
c++でmatからvectorへの変換の...
-
UTF8→ShiftJISに変換したいです!
-
VB6からVB2010への変換について
-
C#でのpngからbmpへの変換について
-
StrConvの使い方について教えて...
-
PHPで、日本語からアルファベッ...
-
エクセルVBAの自動変換機能?
-
C++からCへのソース変換について
-
VB.NETをJavaに変換するツール...
おすすめ情報