No.2
- 回答日時:
前の方の回答は、JAVA言語などで言う初期化の回答で
はないかとおもいます。質問者は
「自分の思うリテラル値に設定したい」というのが、質問の真意では?私も初心者ですが、勘違いであればお許し下さい。実例を書きます。ご参考に。
・Optin Base 1は Subの外に書く
・下記はArray関数を使ったもの
・Array関数は1次元しか使えない
・下記プログラムはフォームをクリックして実行
してください
・---は区切りに表示しただけ
Option Base 1
Private Sub Form_Click()
Dim a(3, 4) As String
b = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", _
"10", "11", "12")
For i = 1 To 3
For j = 1 To 4
a(i, j) = b(4 * (i - 1) + j)
Next j
Next i
Rem--------
For i = 1 To 3
For j = 1 To 4
Form1.Print a(i, j)
Next j
Form1.Print "---"
Next i
End Sub
初級中級のVBの解説書には案外、初期化や2次元配列の
ことを解説してないですね。2-3日前にも類似質問
が有りました。2、3次元配列の内容を1次元配列a=Array(....)で表せると思います。
No.3
- 回答日時:
再度投稿します。
田吾作7です。imogasiさんが
>前の方の回答は、JAVA言語などで言う初期化の回答で はないかとおもいます。
とありますが、VBですよ(^^;)
MSDNでVBのEraseの説明が見当たらなかったのですが、VBScriptのページで見つかりましたのでアドレスを記します。
http://www.microsoft.com/JAPAN/developer/library …
lmiさんは
>VBで2次元配列
と言ってましたが、宣言はどのような形でしてるのでしょう?
考えられる2次元配列の創生方法は3つあります。
(1)
Dim 変数名(5,10) As Long
(2)
Dim 変数名() As Longとしておいて
Redim 変数名(5, 10) As Longと再度配列要素を再宣言
(3)
Dim 変数名 as Vaiant
変数名 = Array(Array(3, 5, 9), Array(1, 6, 4))
として、二次元配列を創生しながら値をセット
Erase 二次元配列の処理結果は
それぞれDimで宣言したときの状態に戻ります
ですので
(1)は全て0が入ります。
(2)は配列要素未宣言の変数になります。
(3)は単なるVariant型の変数になります
メモリの開放にもつながるので、初期値が「0」もしくは、文字列なら「""」とするならEraseをお勧めします。
参考URL:http://www.microsoft.com/JAPAN/developer/library …
No.4ベストアンサー
- 回答日時:
田吾作7です。
あぁーすいません。
初期化だと思ってて、勘違いしてました。すいません。。。
初期化ではなく、初期値のセットですね。。。
Variant型でもよければ
dim wkAryas Variant'バリアント宣言
wkAry = Array(Array(10, 100, 42, 90), Array(50, 30, 60, 30))
といった形でできます。
もし何度も同じ初期値をセットする必要があるのであれば、メモリコピーをお勧めします。
それが一番リソースを消費しない方法だと思います。
以下にソースを記します。
手順1.二次元配列の初期値のマスタを作成(CreAryMst)
手順2.ワークの二次元配列に初期値をセット(InitAry)
手順3.ワークを使用したロジックの実行(ユーザの処理)
手順4以降は手順2または手順3の処理の繰り返し
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private mstAry(1, 3) As Long '二次元配列の初期値のマスタ
Private matrixCount As Long '配列要素数
Sub Main()
Dim wkAry(1, 3) As Long '実際に操作する二次元配列
'二次元配列の初期値マスタを創生
Call CreAryMst
'変数に初期値をセットする
Call InitAry(wkAry(0, 0))
End Sub
'二次元配列の初期値マスタを創生
Sub CreAryMst()
Dim dmyAry As Variant
Dim i As Long
Dim j As Long
Dim min1 As Long
Dim max1 As Long
Dim min2 As Long
Dim max2 As Long
min1 = LBound(mstAry, 1)
max1 = UBound(mstAry, 1)
min2 = LBound(mstAry, 2)
max2 = UBound(mstAry, 2)
'配列要素数を取得
matrixCount = (max1 - min1 + 1) * (max2 - min2 + 1)
'初期値をダミー変数にセット
dmyAry = Array(CLng(10), CLng(50), CLng(100), CLng(30), CLng(42), CLng(60), CLng(90), CLng(30))
'初期値をセットする
For i = min1 To max1
For j = min2 To max2
mstAry(i, j) = dmyAry(i * max2 + j)
Next j
Next i
End Sub
'変数に初期値をセット
Sub InitAry(inLngAryTop As Long)
Call CopyMemory(inLngAryTop, ByVal VarPtr(mstAry(0, 0)), ByVal LenB(inLngAryTop) * matrixCount)
End Sub
こうすることにより、初期値のセットが一瞬で済むので、初期値セット毎にかかる負荷が抑えることができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) INDEX関数とMATCH関数を使用し値を返す数式についてです 2 2022/04/20 13:40
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
定数配列の書き方
Visual Basic(VBA)
-
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
-
4
VB6 配列を初期化したい
Visual Basic(VBA)
-
5
[VBA]改行入りのセルの値を配列に格納したい
Visual Basic(VBA)
-
6
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
7
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
8
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
9
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
10
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
11
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
12
コントロール配列と同じような扱い方
Visual Basic(VBA)
-
13
コマンドボタンを押すたびに大きくなってしまう
Excel(エクセル)
-
14
split関数で区切り文字がない場合
Visual Basic(VBA)
-
15
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
16
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
17
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Dir関数で読み取り順を操作でき...
-
構造体配列の一部初期化!!!
-
VB6で、一次元配列と二次元配列...
-
VBAでMODE関数をつくる
-
VB.NETの配列とArrayListについ...
-
Excel2010のinputboxで複数デー...
-
C#でbyte配列から画像を表示さ...
-
定数配列の書き方
-
配列数とメモリの使用率
-
C#,繰り返し処理での最大値の取...
-
母親の血液中の胎盤遺伝
-
配列の要素がすべてカラかどう...
-
VB6でやると構造体の配列になる...
-
2次元配列の初期値
-
現在コピーされているものによ...
-
VBA Dowhile 判断条件に動的配...
-
VBA ReDim と ReDim Preserve ...
-
ACCESSであえてデータを配列形...
-
レコードセットの中身を配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報