お世話になってます
Public Const AAA(3) As String =("AAA","BBB","CCC","DDD")
dim i as integer
for I=0 to 4
debug.print AAA(i)
next
上のコードを見ていただければわかると思いますが
このようなことを実現させるためには方法はあるのでしょうか?
初期動作時に変数に代入していくのではなく宣言部だけで解決したいのですが。
よろしくお願いします
# うむむ。VB2005 とも VB6 とも取れるコード……。
VB 2005 だとしたら、ReadOnly キーワードで代用できるかと。
Public ReadOnly Sample1() As String = {"AAA", "BBB", "CCC", "DDD"}
Public Shared ReadOnly Sample2() As String = {"AAA", "BBB", "CCC", "DDD"}
VB6 の場合は、LoadResString 関数を使って定数を管理するか、
もしくは、
Public Property Get Foo(ByVal Index As Integer) As String
のような読み込み専用プロパティを作って、それを定数代わりに利用するか、
Public Const Foo As String = "AAA BBB CCC DDD"
Private Sub Main()
MsgBox Split(Foo)(2)
End Sub
のように、Split で対応する、といったところですかね。
魔界の仮面弁士さま回答ありがとうございます。
言語はVB6.0です、失礼しました。
早速Splitを使ってみたのですが問題が起こりました
Public Const Foo As String = "AAA BBB CCC DDD"
Private Sub Main()
Dim i as Integer
For I = 0 To 3
TmpComboBox.AddItem Split(Foo)(i)
Next
End Sub
という具合にコンボボックスにAddさせたかったのですが
相手がコンボボックスだと途中に変数をかましても追加することができませんでした。
またプロパティ設定ですと、要素数が増えるとどうしても管理が大変でしたので・・・。
「Enum」を使うとできる、と聞いたのですが具体的にどう使えばいいかがわかりませんでした。
わがままいって申し訳ありません
上記コードで正常にコンボボックスに足せましたけど
何がどう駄目だったのですか?
なにかエラーがでています?
このソースコードはフォーム内に書いていますか?
Public Const Foo As String = "AAA BBB CCC DDD"
と書いてますので、標準モジュールですかね?
だとしたら、
TmpComboBoxは、どの画面のっていうのを受け取るか指定しないと駄目ですね。
FORM1.TmpComboBox.AddItem Split(Foo)(i)
みたいな感じでしょうかね
あんび様回答ありがとうございました
無事動作しました
Meフォームなのですがフォーム名指定しないといけなかったのですね
魔界の仮面弁士様、あんび様感謝致します!
ツイート | ![]() |