- ベストアンサー
VBSで変数の宣言はできないのですか?
VBSで、 Dim a As String a = InputBox("MsgBoxに表示する値を入れてください。", , "test") MsgBox a と文章を作って、test.vbsで保存しました。 するとエラーになります。 Dim a As Stringの部分を消すと、問題なく作動します。 もしくは、 Dim a a = InputBox("MsgBoxに表示する値を入れてください。", , "test") MsgBox a でも正常に動きます。 VBSで変数の宣言はできないのでしょうか?
- mcptcmhm
- お礼率100% (45/45)
- Visual Basic
- 回答数5
- ありがとう数5
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こっちの方がより面白いか。 自動型変換の便利さと危うさですね。 dim a msgbox typename(a) a=1 msgbox "a= " & a & " typename= " & typename(a) a=a*100000 msgbox "a= " & a & " typename= " & typename(a) a=a*0.1 msgbox "a= " & a & " typename= " & typename(a) a= a & "b" msgbox "a= " & a & " typename= " & typename(a) a=a*1
その他の回答 (4)
- nda23
- ベストアンサー率54% (777/1415)
VBSやJavaScriptはデータ型を宣言できません。 しかし、実際は数値、文字、オブジェクトの 型があります。よく痛い目に遭うのが+です。 A = X + Y ここでXとYが数値なら期待通りなんですが、 文字だとおかしくなる。Xが"1"、Yが"2"だと Aは"12"になります。InputBoxで数字を入力 させる場合は要注意です。
お礼
ありがとうございました。
- nicotinism
- ベストアンサー率70% (1019/1452)
無いわけでもないのですが←どっちだよ! VBS君が「私が適宜、データ型を設定します」 だから、型宣言は止めて・・てな感じです なので、うっかりすると・・以下のVBSをお試しを dim a msgbox typename(a) a="A" msgbox "A= " & typename(a) msgbox a & 1 msgbox a * 1
お礼
ありがとうございました。
- asuncion
- ベストアンサー率33% (2126/6286)
>するとエラーになります。 今回はすぐ解決したようですが、次からは 「どんな」エラーが出るかを詳しく書いてくださると、 より早く解決するような気がします。
お礼
そうします。失礼しました。
- kmee
- ベストアンサー率55% (1857/3366)
変数の宣言ができないわけではなく、型の宣言ができない、というか「型」という概念が無い Dim a と、変数は宣言できます。 Option Explicit をつければ、Dim無しの変数は使えません
お礼
「できない」のではなく「ない」のですね。 ありがとうございました。
関連するQ&A
- 変数の宣言について
VB2008を使用しています。 Excel内の文字をTextBoxに表示させているのですが、Excelのセル名を変数を使用して表示したいのですが上手くいきません。 TextBox1.Text = sheet.Range("A1").Value は正常に作動 TextBox1.Text = sheet.Range("A"&"1").Value も正常に作動 そこで、Aを変数にしようと考えたのですが、 Dim COLUMN As String Dim A As String COLUMN = A TextBox1.Text = syokuin.Range("COLUMN" & "1").Value としたところエラーになってしまいます。 解決策をご存知の方みえましたらよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- グローバル変数などについて
Option Explicit Dim str1 As String '・・・(1) Sub テスト() Dim str2 As String '・・・(2) str1 = "テスト1" str2 = "テスト2" MsgBox str1 MsgBox str2 End Sub (1)はグローバル変数と言うとの事ですが (2)は何変数と言うのでしょうか? ローカル変数ですか? また、(1)がdimではなく、 Public str1 As String となった場合でも、 プロシージャーの外にあれば、グローバル変数と言うのでしょうか?
- ベストアンサー
- オフィス系ソフト
- プロシージャーの外で宣言した変数の値の破棄の仕
プロシージャーの外で宣言した変数の値の破棄の仕方について教えてください。 ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i End Sub ++++++++++++++++++ を実行すると、どんどん値が増えていきますが、 回避するには、 ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i i = 0 End Sub ++++++++++++++++++ とするしかないのでしょうか? ++++++++++++++++++ Dim i As Long Sub test() i = i + 10 MsgBox i Set i = Nothing End Sub ++++++++++++++++++ としたら、エラーになりました。
- ベストアンサー
- Visual Basic
- vbaの 変数の宣言 記号は使えない?
vbaの 変数の宣言 記号は使えない? Sub test1() dim st @ End Sub みたいに変数の型を As String ではなく記号で表現ってできないんでしたっけ? エラーになってしまいます。
- ベストアンサー
- オフィス系ソフト
- 参照渡しをする時は、渡される側は違う変数を使う?
参照渡しをする時は、渡される側は違う変数を使うべきなのでしょうか? VBAのお勉強をしているのですが Sub test1() Dim mystr As String mystr = "a" Call test2(mystr) Call test3(mystr) End Sub Sub test2(ByRef mystr As String) MsgBox mystr End Sub Sub test3(ByRef mystr2 As String) MsgBox mystr2 End Sub この場合、test2とtest3ではどちらを使ったほうがいいのでしょうか? test3は、mystr2 というmystrとは違う変数を使っていますが、 test2は、test1のmystrと同じ変数を使っています。 test1と同じ変数を使おうが違う変数を使おうが どちらにしろ (ByRef 変数名 As String) で宣言するから、変わらないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBA モジュールで共通に使う変数の宣言方法
VBAにてプログラミングを覚えている者です。 現在、いくつかのモジュールがあり、それぞれDimにて宣言している共通の変数があります。 いくつものプロシージャに毎回宣言せず、どこかでひとまとめにしたいと思い、色々と調べています。 例えば、 Dim pic1 As Picture Dim cell1 As String Dim pass1 As String Dim pic2 As Picture などです。 Dimのほかに、Publicの宣言などがありますが、いま一つ使い方がピンときません。 共通宣言する変数をひとつのモジュールとして登録し、活用できると、いざ変更となったときに その内容だけ置き換えればいいと思うのですが、みなさんはどのように宣言をしていますか? (例えば、Stringなどは各モジュールで変更するのが大変だと思うのですが・・・) ヒントを教えていただければと思います。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- サブフォームに変数を代入し、RecordSourceの値を取得したい
サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。 Sub test1() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource End Sub ******************************************************************* Sub test2() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource End Sub オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) ******************************************************************* Sub test3() Dim サブフォーム As String Dim フォーム As String フォーム = "土台" サブフォーム = "フォーム1" MsgBox Forms(サブフォーム).RecordSource End Sub 実行時エラー'2450' マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。 ******************************************************************* test1~3のうち test1のみはうまくいくのですが 変数を代入したいです。 ヘルフ゜のには Forms![受注]![受注サブフォーム].Formとなってますが これじゃ変数を代入できないですよね。 どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 変数の値を破棄する方法
データ型で宣言した場合、 変数の値はどうやって破棄すればいいのでしょうか? 例えば、標準モジュールに Option Explicit Dim s As String Dim w As Worksheet Sub test() Set w = ActiveSheet s = "sss" MsgBox w.Name MsgBox s Set w = Nothing s = Nothing End Sub とした場合、 s = Nothingがエラーになります。 オブジェクト型で宣言したら、 Set ●= Nothing で破棄しますが、 データ型で宣言した場合の正しい破棄の仕方を教えてください。 今回の例は、モジュールレベルのdimステートメント で宣言しているため、プロシージャーが終わっても 値を保持しています。
- ベストアンサー
- オフィス系ソフト
- 文字列を変数名として扱う方法
vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
ありがとうございました。