- ベストアンサー
エクセル VBA 変数を一括で宣言したい
こんにちは。VBAプログラム初心者です。 変数を宣言する際、 dim オーダ番号 as long, オーダ番号2 as long, …オーダ番号100 as long という内容を一括で宣言することは可能でしょうか? イメージ的には下のような感じなのですが。。。 dim i as integer for i = 1 to 100 dim オーダ番号i as long dim 単価i as long next マクロで便利にするつもりが余計面倒になっていて困っております。 解決策を教えていただけましたら幸いです。 何卒よろしくお願いいたします。
- hamanyaaki
- お礼率76% (42/55)
- オフィス系ソフト
- 回答数4
- ありがとう数15
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Dim オーダー番号(1 To 100) As Long オーダー番号(1) = 123 オーダー番号(20) = 456 MsgBox オーダー番号(1) & vbLf & オーダー番号(20) 配列変数にしてしまうとか?
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 配列変数を使うのかどうかは、なんとも言えません。 ピンポイントの質問で聞かれたらそうなるとは思うものの、全体をみずにして、どうするべきかは判断が付きません。その変数をどう使うかであって、変数100個が必要であるかは分かりません。単に、値を置くのなら、ワークシートを利用してもよいのです。言い換えると、今のままのコードの延長で、そこだけを直せば済むかどうかは分からない、ということです。そこまでの自信があるなら、逆に、そのような質問は出ないはずです。 >マクロで便利にするつもりが余計面倒になっていて困っております。 それは、この手のプログラミング言語では、入力の手間は、何時間、何日、何ヶ月という時間を要しても、必要なら何千行も、手書きで書かなくてはなりません。手間自体は惜しんではいけません。しかし、不必要なコードを書くべきではありません。
お礼
ご指導ありがとうございます。 よく考えて見ます。
- imogasi
- ベストアンサー率27% (4737/17068)
これこそ配列を使うケースであって、何でこんなことが質問になるのかな。 dim a(100) とか定義しますが、aがオーダー番号になっただけでしょう。 要素は添え字でなく、配列要素で指定すればよい。a(x)のx。 配列の導入の必要性説明で、普通A1,A2,A3,・・・と定義するのは大変なのでA(100)と配列を使うと便利ですと説明されます。質問者が問題を難しくして質問しているだけ。頭で、多分中身は何かの「オーダー番号」だとイメージしておれば済む話では。 質問者側に反論ががあればどうぞ。 変数なども名前表現でで性格や中身を十分は表せないのですから拘らなくて良いと思うが。上記でも、「何のオーダー番号?」だと言われれば(配列)変数名では表現できてないでしょう。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>マクロで便利にするつもりが余計面倒になっていて困っております。 どのような使い方をするのか解りませんが、普通は配列を使います。 Dim オーダ番号(100) as Long http://www.officepro.jp/excelvba/array/index2.html http://pc.nikkeibp.co.jp/article/NPC/20070802/278891/
お礼
回答ありがとうございます。 配列でできそうです。 教えていただいたリンクも大変参考になりました。
関連するQ&A
- Excel にて変数の宣言の仕方
Excel2002を使用しています。 標準モジュール内で下記のように変数を宣言すると Dim i,k as long (例)kには、あるセルの値を取得します。10000 Keta=len(k) この結果、ketaには、「4」という結果になります。 10000なので、「5」が返らないといけないのですが、うまくいきません。 ところが、 Dim i ,k ,m as long このように変数kの後ろに他の変数(今回はm)を記載すると、 「5」という結果が返ってきます。 変数の宣言の仕方が間違っているのでしょうか? よろしくお願いいたします。 ちなみに、 Dim k as long としても、「4」の結果が返ってきました。 同じ行に他の記載をしないとうまくいかないようです。。。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでの変数
いつもお世話になります。 今回の『壁』は”変数”です。 変数の中に更に変数を持たせることはできますか? 何をしたいかと言いますと… dim mon1 as string dim mon2 as string dim mon3 as string dim mon4 as string dim mon5 as string dim tue1 as string dim tue2 as string …というように月曜から日曜までの頭3文字プラス1~5の組み合わせの変数を作りたいのですが、 この調子で作っていくと35コになってしまいます。 そこで、曜日の頭3文字より後ろは決まって1~5のため、 dim i as integer for i = 1 to 5 next i …と組み合わせられないかと思ったのです。 どなたか知恵をお貸しください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAの一括型宣言について
VBAにて 変数の先頭がA~Gまでの文字で始まるものはすべてsingle宣言をしたいのですが 昔使っていた記憶があるのですが忘れてしいました 現在も使用可能であれば宣言方法お教えください。 ex dim A1 as single dim B2 as single dim Ga as single これを ○○○ A~G as single のように宣言したい、 環境 offixe 2010 os windows 7
- ベストアンサー
- Visual Basic
- VBAにおいて、""内で変数を使用したい
VBAにおいて、""内で変数を使用したい 0864_001.xls 0864_002.xls … 0864_009.xls というファイルがあるとき、0864_001.xlsを開く→処理→閉じる→0864_002.xlsを開く→… というように処理をしたいと思い、以下のようなマクロを作成しました。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00i.xls" 処理 閉じる Next i End Sub 実行しようとしてもファイルを開くことが出来ずに困っています。 ""内で変数を使うことは出来ないのでしょうか? また、どのようにすれば実行できるようになるのか教えてください。
- ベストアンサー
- その他MS Office製品
- VBAの変数宣言について
VBAの変数宣言について サイトを調べながら仕事で色々と自動化しています。VBAを学び始めてまだ日が浅いので疑問は尽きないのですが、一番気になるところを一つ。 変数宣言の As ~ ってのがどうも苦手です。 とりあえず変数として使いたいけど、As ~ の ~ でなにを入れたらいいか分からず、入れないまま使っています。やはり、良くないのでしょうか? 上手に覚えるコツはありますか?
- ベストアンサー
- Excel(エクセル)
- エクセルVBA:ある有名な方のサイトで・・・
VBA初心者です。よろしくお願いします。 いま、VBAを勉強しています。 有名なT氏のエクセルVBAに関するサイト(オフィスT・・)の、「高速化テクニック」のところで、下記、★ ★ ★以下のような例がありました。 「Cells(j, 1).Font.FontStyle = "太字"」 が目的の作業であるならば、 「Dim i As Integer」「For i = 1 To 100」を何のために宣言し、記述しているのでしょうか?「j」の変数の宣言は「Cells(j, 1).・・・」で理解できますが、「i」の宣言また、「For i = 1 To 100」は不要のように思われるのです。 最初は何かの間違いかと思っていましたが、同氏の他の解説にも同様の記述がありましたので、きっと、意味があるのですね。教えてください。 ★ ★ ★ Sub Test2() Dim i As Integer, j As Integer For i = 1 To 100 For j = 1 To 10 Cells(j, 1).Font.FontStyle = "太字" Next j Next i End Sub
- ベストアンサー
- オフィス系ソフト
- 変数を動的に作るには?
変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか? 例えば、連番を格納する文字列型変数を一時的に100個必要だとすると Dim textdat1 As String = "Number1" Dim textdat2 as String = "Number2" Dim textdat3 as String = "Number3" ・ ・ ・ と100個宣言しないといけないと思うのですがこれを For i As Integer = 1 To 100 Dim textdat(i) As String = "Number" & i Next i という様な形で変数を作成することは出来ないのでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- VBでの変数宣言は1行に2つできないのですか?
Visual BASICで変数宣言は1行に2つ以上記述しても実際、動作します。 例 DIM A、B as Integer このように宣言すると、AもBも整数となります。 しかし、このように宣言して、この変数を Call サブプログラム名(B) のように、パラメ-タとして引き渡そうとするとエラーとなってしまうようです。 よくわからないまま、 DIM A as Integer DIM B as Integer と分けて記述したらエラーがきえたようです。 変数宣言は1行に2つ以上まとめて記述してはいけないのでしょうか? VBは Ver 5 です。
- ベストアンサー
- その他(ソフトウェア)
- Excel マクロ:変数を複数使う場合
マクロ初心者です。 For文で、変数を2つ定義し、それぞれが1つずつ増えてくれるような マクロを組みたいのですが、うまくいきません。 例えばA列の並んだ数字を、B列に一個とばしで入力するとして・・・ 例) Dim i As Integer Dim j As Integer For j = 2 To 10 Step 2 For i = 1 To 9 Cells(j, 2).Value = Cells(i, 1).Value Next i, j ではだめですよね。iが1つ増える時に、jも1つ増える、 というようにVBAを組むことが可能なのでしょうか? ど素人な質問ですみませんが、教えてください。
- ベストアンサー
- オフィス系ソフト
- VBAの変数について
VBAでUserFormからデータを入力します。 入力された各データをTarget1~Target20に代入します。 各Targetにデータが入っている場合は、配列K(i)に「1」を格納します。 そこで、Target "1"~"20" を変数iであらわしたいのですが、どのように表現したらよいのでしょうか。 Dim i As Integer Dim K(20) As Integer Target1 = TextBox1.Value Target2 = ComboBox1.Value : : Target19 = TextBox12.Value Target20 = ComboBox8.Value For i = 1 To 20 If 『 ? 』 <> "" Then K(i) = 1 EndIf Next i
- ベストアンサー
- Visual Basic
お礼
回答ありがとうございます。 配列でできそうです!