配列の定数宣言

解決


でぃえる  2007-02-21 04:37:48  No: 135382

お世話になってます

Public Const AAA(3) As String =("AAA","BBB","CCC","DDD")

    dim i as integer
    for I=0 to 4
        debug.print AAA(i)
    next

上のコードを見ていただければわかると思いますが
このようなことを実現させるためには方法はあるのでしょうか?
初期動作時に変数に代入していくのではなく宣言部だけで解決したいのですが。
よろしくお願いします


魔界の仮面弁士  2007-02-21 06:10:50  No: 135383

# うむむ。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 で対応する、といったところですかね。


でぃえる  2007-02-21 18:31:05  No: 135384

魔界の仮面弁士さま回答ありがとうございます。
言語は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」を使うとできる、と聞いたのですが具体的にどう使えばいいかがわかりませんでした。
わがままいって申し訳ありません


あんび  2007-02-21 18:59:26  No: 135385

上記コードで正常にコンボボックスに足せましたけど
何がどう駄目だったのですか?
なにかエラーがでています?
このソースコードはフォーム内に書いていますか?
Public Const Foo As String = "AAA BBB CCC DDD"
と書いてますので、標準モジュールですかね?
だとしたら、
TmpComboBoxは、どの画面のっていうのを受け取るか指定しないと駄目ですね。
FORM1.TmpComboBox.AddItem Split(Foo)(i)
みたいな感じでしょうかね


でぃえる  2007-02-21 19:07:55  No: 135386

あんび様回答ありがとうございました
無事動作しました
Meフォームなのですがフォーム名指定しないといけなかったのですね

魔界の仮面弁士様、あんび様感謝致します!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加