Cでの開発経験はありますが、VBに関しては初心者です。
現在現在VBを使用したシステムを作成するにあたり、ユーザーインターフェイスを検討するため、DBアクセス部を省略したプロトタイプを作成しています。
このシステムでは商品カテゴリを選択するコンボボックスと、選択されたカテゴリの商品一覧を表示するリストボックスからなるものです。
以下のようなプログラム(Cとのごちゃ混ぜですみません。)を作成すればとりあえず動くものは簡単にできるであろうと考えたのですが、VBでの初期化済み配列変数の定義の仕方が分からず困っています。
VBではどのようにすれば良いのでしょうか?
また、VBでこのようなことができない場合、通常はどのようにするものなのでしょうか?
struct Shouhin {
char name[100];
int price;
};
struct Shouhin shouhin_list[][] = {
{
{"鉛筆", 40},
{"ボールペン", 100}
}, {
{"大学ノート", 100},
{"お絵かき帳", 200}
}
};
---
' コンボボックスでの選択に合わせてリストボックスの内容を切り替える。
Private Sub ComboBox_Click()
ListBox.list = shouhin_list[ComboBox.ListIndex]
End Sub
No.1ベストアンサー
- 回答日時:
こんな回答で良いのでしょうか。
VBでは、1次元配列に限り、関数でArrayがあります。VBAでも使えます。
Youbi=Array("日曜","火曜","水曜","木曜","金曜","土曜")
のように使います。
A=youbi(2)でAに文字列の水曜が入ります。
二次元のデータを扱うときは,次元数が2,3次元程度なら
下記で凌げます。文字列、数値をまぜても差し支えない。
Youbix=Array("日曜",6,"月曜",6,"火曜",5,"水曜",6,"木曜", _
6,"金曜",6,"土曜",5)
で
日曜 6(出席者6人とか色々の意味あり)
月曜 6
火曜 5
水曜 6
・
・
土曜 5
の2次元表が定義できます。
使うときは
For i=0 to 11 step 2
you=youbix(i)
ninnzu=youbix(i+1)
(処理 略)
Next i
で使えます。
とび先(ブランチ先)を配列にしたいときは、不勉強で
経験ありません。
誰かご存知の方答えてください。
コントロール配列と言うのも別にあります。
VBでは区切りセミコロンがないので、行を次ぎに変えて
続けるときは、スペース+アンダーバーを使います。
以 上
ご回答ありがとうございます。
先にも書きましたが、VBビギナーのため、ご回答内容を理解、検討するのに時間がかかり、お礼が遅くなってしまいました。
申し訳ありません。
ご回答を参考に私なりに試行錯誤した結果、一応目的は達せられました。
以下にその過程を記述します。
質問ではユーザー定義型Shouhinの配列を用意することを考えていましたが、Array関数の引数にユーザー定義型データを与えることはVBの仕様で不可能でした。
最終的にはリストボックスに表示するので、特にユーザー定義型である必要はありませんので、"鉛筆 40"、"ボールペン 100"のような文字列の配列を作成すればよいかと考えました。
しかし、"_"による行連結は最大10までしかできませんでした。
(質問中のサンプルはフィールド数もデータ数も少ないのですが、作成しようとしているシステムはリストボックスに通常数百個の項目が並ぶもので、プロトタイプでもスクロールが行える程度の数(20個ぐらい)のレコードが必要です。)
最後に、ご回答の最後の方で触れられているコントロール配列を以下のように使ってみて一応目的は達せられましたが、imogasiさんの想定されていたのはこのようなものでしょうか?
---
1. 商品を表示するためのリストボックス(lstShouhinListView)とは別に、データを保持するためだけの、非表示リストボックスを商品カテゴリの数だけ用意し、これらをコントロール配列(lstShouhinListData())とする。
(商品のリストの内容はフォームデザイナのプロパティウィンドウで設定する。)
2. コンボボックスにてカテゴリが選択されたら、選択されたカテゴリのデータ保持用ListBoxの内容を、商品一覧表示用のリストボックスへコピーする。
Private Sub cmbCategory_Click()
Dim lb As ListBox
Dim i As Integer
Set lb = lstShouhinListData(cmbCategory.ListIndex)
lstShouhinListView.Clear
For i = 0 To lb.ListCount
lstShouhinListView.AddItem (lb.List(i))
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- 物理学 2物体の単振動 1 2023/08/17 20:27
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAで質問です。離れた二...
-
C言語 配列の長さの上限
-
パイソンの
-
C言語で特定列だけを抽出して配...
-
アルファベットの配列を数字の...
-
C言語の配列のサイズ
-
配列を使わずに、変数名を動的...
-
Excel、VBAのユーザーフォーム...
-
本日までの累計を表示させたい!
-
メモリの初期値
-
【C言語】配列の中に配列を入れ...
-
構造体配列を引数とするDLL作成...
-
if文で「配列a[i]が小数ならば...
-
unsigned char の配列で途中で0...
-
配列の参照渡しで型が一致しま...
-
配列内の文字間を排他的論理和...
-
c言語乱数について
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
構造体配列のポインタを引数に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
配列の参照渡しで型が一致しま...
-
C# Listを使わずに2次元配列の...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
パイソンの
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
unsigned char配列への入力の仕方
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C言語で特定列だけを抽出して配...
-
擬似コード 長さがmの配列でな...
-
メモリの初期値
-
C言語初心者 構造体 課題について
おすすめ情報