変数を作成する際には必要な分だけ一つずつ宣言する必要があるのでしょうか?
例えば、連番を格納する文字列型変数を一時的に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
という様な形で変数を作成することは出来ないのでしょうか。
初歩的な質問かもしれませんが、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こういうのは、
「配列」という仕組みの必要性を書いてある説明の、始めにかならず書いてあることでしょう。
その配列を使えばよいでしょう。
配列を使いますという宣言(次元と要素) Dim
配列をクリア Array.Clear
配列の次元と要素をプログラムの実行中に変える Redim
Array.Resize
配列を抹消
配列の値を初期化
配列のメソッド・プロパティ
ーーー
下記を参考に
http://homepage1.nifty.com/rucio/main/dotnet/sho …
http://smdn.invisiblefulmoon.net/programming/vb. …
ーー
質問にVB6かVB.NET系か書くようにしてください。
忘れていました、使用言語はVB.NETです。
求めていた事は配列で解決する事が出来ました。
他に回答していただいた方も他の用途で参考にさせて頂きます。
有難う御座いました。
No.2
- 回答日時:
Reflectionを使用すれば動的に変数を宣言できます。
とっても難しいですよ。
ArrayListのようなコレクションクラスを使って動的に配列を生成すれば目的は達成できるのでは?
参考になれば幸いです。
Dim nameLists As New List(Of String)
nameLists.Add("どら")
nameLists.Add("のび")
nameLists.Add("しず")
nameLists.Add("じゃい")
nameLists.Add("すね")
'じゃいを削除
nameLists.Remove("じゃい")
For Each Name As String In nameLists
Console.WriteLine(Name)
Next
nameLists = Nothing
'なんとしても変数名でがんばりたい場合
'StringDictionaryでもよいほかにも使えますが今回はHashTableで
'Dim s As Collections.Specialized.StringDictionary
Dim nameHashTable As New Hashtable
Dim counter As Integer = 0
nameHashTable.Add("Number" & counter, "どら")
counter += 1
nameHashTable.Add("Number" & counter, "のび")
counter += 1
nameHashTable.Add("Number" & counter, "しず")
counter += 1
nameHashTable.Add("Number" & counter, "じゃい")
counter += 1
nameHashTable.Add("Number" & counter, "すね")
'すねを削除
nameHashTable.Remove("Number" & counter)
For i As Integer = 1 To nameHashTable.Count - 1
Console.WriteLine(nameHashTable("Number" & i))
Next i
No.1
- 回答日時:
Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off
Class Q5348939
Shared Sub Main()
'普通に配列を作ってみる
Dim hoge(10) As String
For i As Integer = 0 to 10
hoge(i) = i.ToString()
Next i
System.Diagnostics.Debug.Print(hoge(3)) '"3"
'System.Diagnostics.Debug.Print(hoge3) hoge3という変数を作っているわけではないのでコンパイルエラー。以下同文
'ReDim Preserveはあまり好きじゃないのでArray.Resize
'どうしても動的でなきゃだめ?
Dim fuga As String()
For i As Integer = 0 to 10
Array.Resize(fuga,i + 1)
fuga(i) = i.ToString()
Next i
System.Diagnostics.Debug.Print(fuga(10))
'俺はリストのほうが好みかな
Dim guri As System.Collections.Generic.List(Of String)
guri = new System.Collections.Generic.List(Of String)()
For i As Integer = 0 to 10
guri.Add(i.ToString())
Next i
System.Diagnostics.Debug.Print(guri(4))
'自動でずれる
guri.RemoveAt(4)
System.Diagnostics.Debug.Print(guri(4))
End Sub
End Class
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
配列を使わずに、変数名を動的にループで回したい
C言語・C++・C#
-
-
4
VBAで変数の数/変数名を動的に変化させる
その他(プログラミング・Web制作)
-
5
Excel-vba 文字列と変数を連結して更に変数として扱いたい
その他(プログラミング・Web制作)
-
6
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
7
文字列を変数名として扱う方法
Visual Basic(VBA)
-
8
配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
Visual Basic(VBA)
-
9
大量の変数を定義するにはどうしたら良いですか?
Visual Basic(VBA)
-
10
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
13
CloseとDisposeの違い
Visual Basic(VBA)
-
14
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
15
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
16
VB6,リストボックスの特定行の色変更は可能?
Visual Basic(VBA)
-
17
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
18
変数名の取得
Visual Basic(VBA)
-
19
Excel VBA ListViewサブアイテムの文字色
その他(プログラミング・Web制作)
-
20
For ~ Next の中での Dim宣言について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に作るには?
-
EXCEL VBA で、0から?1から?
-
IF関数でEmpty値を設定する方法。
-
VBAで配列の計算
-
C言語 重複しない4ケタの乱数...
-
応用情報技術者試験の令和元年...
-
VB.net 引数で配列変数を渡す際...
-
パソコンキーボードで時分秒を...
-
VBで作った乱数を一度も重複さ...
-
配列の要素数を超えた参照のコ...
-
複数のテキストボックスに同じ...
-
VBでbyte配列型のインスタンス...
-
動的配列が存在(要素が有る)か...
-
c言語を勉強している初心者です...
-
空き番号探し
-
遅延バインディングを使用でき...
-
C#の質問
-
Excel VBA 多段階配列の宣言の仕方
-
VB functionについて
-
VBA 配列数式的に一括してR...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
IF関数でEmpty値を設定する方法。
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
EXCEL VBA で、0から?1から?
-
動的配列が存在(要素が有る)か...
-
変数を動的に作るには?
-
C言語 重複しない4ケタの乱数...
-
VBで作った乱数を一度も重複さ...
-
VB.net 引数で配列変数を渡す際...
-
配列の要素数を超えた参照のコ...
-
C#の質問
-
複数のテキストボックスに同じ...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
遅延バインディングを使用でき...
-
【MFC】GetCount()とGetSize()...
-
配列プロパティをREDIMする方法...
-
Excel VBAで配列の途中から(X)M...
-
五目並べのプログラムを配列と...
おすすめ情報