配列にそれぞれ値を入れると「宣言が必要」とエラーが出る

タグの編集
投稿者 見習レベル  (社会人) 投稿日時 2010/1/17 02:31:13
VBを使ってアプリケーションを作っているのですが、配列を宣言して各々に文字を入れているのですが、
いざビルドしてみようとすると、cnt(1)~cnt(101)までだけなぜがエラーが出ます。
どこが間違っているのでしょうか。
ソース
  Dim cnt(245) As String
    cnt(1) = "ああ"
    cnt(2) = "いい"
    cnt(3) = "うう"
        :
        :
    cnt(101) = "ええ"
    cnt(102) = "おお"

        :
        :
    cnt(243) = "かか"
    cnt(244) = "きき"
    cnt(245) = "くく"
    cnt(10) = "ここ"
エラー内容
代入ステートメントやループ ステートメントなどの非宣言ステートメントが、プロシージャの外側にあります。プロシージャの外側に記述できるのは宣言だけです。

または、プログラミング要素が、Dim や Const などの宣言キーワードを使用せずに宣言されています。
投稿者 るしぇ  (社会人) 投稿日時 2010/1/17 03:55:02
エラーメッセージ通りでは?プロシージャ(関数)の外側に代入ステートメント
(値を代入する式)は書けません。

    Dim cnt(245) As String ' 宣言 
    Private Sub Test       ' 関数はここから 
        cnt(1) = "ああ"    ' 代入式 
        cnt(2) = "いい"    ' 代入式 
        cnt(3) = "うう"    ' 代入式 
    End Sub                ' 関数はここまで 

投稿者 見習レベル  (社会人) 投稿日時 2010/1/17 04:45:33
なるほどそうだったんですか。
プロジャー内で代入していますが、これって他のプロジャーに影響というか、利用することはできるのでしょうか?
投稿者 neptune  (社会人) 投稿日時 2010/1/17 05:09:07
このサイト内で解説してくれてますから勉強しましょう。
特に初級講座は絶対必要な知識でこれらの知識なしではプログラムは書けません。

初級講座 
第8回 もっと変数
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard8.htm
投稿者 見習レベル  (社会人) 投稿日時 2010/1/17 06:34:33
参考にします。
ありがとうございました
投稿者 しげ  (社会人) 投稿日時 2010/1/17 06:35:27
実際のプログラムは
○○ Sub
   ここに書く
End Sub
に書きます

るしぇさんの書かれている内容だと
フォーム全体でcnt変数が使えます。

引用します。
Private Sub Test       ' 関数はここから 
        Dim cnt(245) As String
        cnt(1) = "ああ"    ' 代入式 
        cnt(2) = "いい"    ' 代入式 
        cnt(3) = "うう"    ' 代入式 
End Sub                ' 関数はここまで 

これだと、Testサブ内でしかcnt変数を使用することができません。

Public cnt(245) As String ' 宣言 
Private Sub Test       ' 関数はここから 
        cnt(1) = "ああ"    ' 代入式 
        cnt(2) = "いい"    ' 代入式 
        cnt(3) = "うう"    ' 代入式 
End Sub                ' 関数はここまで

Publicで宣言すると別フォームでもcnt変数を使うことができます。
投稿者 宣次郎  (社会人) 投稿日時 2010/1/17 06:40:02
入門の本でも読んどけ。
場違いだぞ。おまえ。
投稿者 在浩  (社会人) 投稿日時 2010/1/17 06:41:16
option baseステートメントがない限り、配列の添え字のエラーもあるようです。
cnt(0)?cnt(244)まで使用できるだろうと考えています..
投稿者 はなちゃん  (社会人) 投稿日時 2010/1/17 06:41:25
あら、ほんとね。
やだぁ。
投稿者 見習レベル  (社会人) 投稿日時 2010/1/17 07:03:05
無事解決いたしました。

解説してくださった方に感謝します。
投稿者 在浩  (社会人) 投稿日時 2010/1/17 08:09:47
' txtview Textbox = Muliline Is True

Option Explicit
Option Base 1
Dim strCnt(245) As String

Private Sub Form_Load()
    Dim strArray As Variant
    Dim intK As Integer
    intK = 1
    For Each strArray In strCnt
        strArray = intK & ". " + "Init"
        strCnt(intK) = strArray
        txtView = txtView + strCnt(intK) + vbCrLf
        intK = intK + 1
    Next strArray
End Sub

Private Sub cmdOk_Click()
'        cnt(1) = "ああ"
'        cnt(2) = "いい"
'        cnt(3) = "うう"
':
':
'        cnt(101) = "ええ"
'        cnt(102) = "おお"
'
':
':
'        cnt(243) = "かか"
'        cnt(244) = "きき"
'        cnt(245) = "くく"
'        cnt(10) = "ここ"
End Sub
投稿者 名無し  (社会人) 投稿日時 2010/1/18 06:16:16
>宣次郎
場違いはあんた。というか冷たいぜ。
こんな事書く暇があったらVisualBasic中学生のトップページアクセスカウンタの下の文章から見直せ。
ここのサイトはどう言う調べ方をすればいいかも分からない人が質問したりする掲示板でしょ。
コンボボックスに小学生を選択できるぐらいなのですから。
掲示板に書くネチケット入門ぐらい守ろうぜ。