Page 61 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼変数の中に変数を使用するには? Aki 02/9/7(土) 21:26 ┣Re:変数の中に変数を使用するには? つん 02/9/7(土) 22:31 ┃ ┗Re:変数の中に変数を使用するには? Aki 02/9/10(火) 16:05 ┃ ┗うーーーーん(>_<) つん 02/9/10(火) 16:48 ┃ ┗Re:私もまわりませんでしたが ひで 02/9/10(火) 17:59 ┗Re:変数の中に変数を使用するには? Aki 02/9/10(火) 23:56 ─────────────────────────────────────── ■題名 : 変数の中に変数を使用するには? ■名前 : Aki ■日付 : 02/9/7(土) 21:26 -------------------------------------------------------------------------
例えば、 Dim j As Integer Dim A() As Integer Dim B() As Integer Dim C() As Integer For j = 1 To 12 A(j) = Cells(j + 3, 2) B(j) = Cells(j + 3, 3) C(j) = Cells(j + 3, 4) Next j こんな感じで、変数の()の中にさらに変数を使いたいのですが、 上手くまわってくれません。 実行すると、 「Sub または Functionの定義がされていません」 とか何とか出ます。 A(1) = Cells(4, 2) B(1) = Cells(4, 3) C(1) = Cells(4, 4) A(2) = Cells(5, 2) B(2) = Cells(5, 3) C(2) = Cells(5, 4) ↑のような結果になる感じにしたいのですが。 Dim文の()の中を数字(データの個数)にしてみたり、 いろいろ変えてみたりもしたのですが、 結果は同じでした。 どこを変えればいいのでしょうか? 初級者なので、効率よりも自分のわかる範囲の構文でマクロを組んでいます。 できるだけ初級向けの構文で教えていただけると幸いです。 よろしくお願いします。 |
Aki さん、こんばんは >こんな感じで、変数の()の中にさらに変数を使いたいのですが、 >上手くまわってくれません。 >実行すると、 >「Sub または Functionの定義がされていません」 >とか何とか出ます。 Akiさんのコードをそのままコピペして、 (変数の宣言部分では、配列の要素数を入れて) 試してみましたが、こちらでは上手く行きましたよ? どの行でエラーが出ましたか? それから、配列の要素数があらかじめわかってない場合は、 わかった時点で、例えば、 Dim i as Integer Dim k as Integer Dim A() as Integer i = 12 Redim A(1 to i) For k = 1 to i A(k) = Cells(k,1).Value Next k というように、改めて宣言しなおさないとエラーになります。 Redimについては、ヘルプを読んでみてね。 (上手く説明できへんし・・・・ごめん^^;) |
お返事ありがとうございます。 まわりますか・・・(^^; インストールし直した方がいいのかな・・・(汗 >Akiさんのコードをそのままコピペして、 >(変数の宣言部分では、配列の要素数を入れて) >試してみましたが、こちらでは上手く行きましたよ? >どの行でエラーが出ましたか? えと、 デバッグの矢印がSubのところを差してて、 A(j) =の部分が反転している状態になります。 何がまずいんだろ・・・。 |
こんにちは うーーん(>_<) 何がまずいんでしょうね? 今、念のため会社のマシンで試してもOKでしたよ。 原因・・・思いあたらないなあ。 エラーメッセージは 「Sub または Functionの定義がされていません」 なんですよね? A(j) = Cells(j + 3, 2) の右側で何か間違えてませんか? 例えば、Cellsのスペルを間違えてたら、そのエラーが出ますけど・・・ それでも、 >A(j) =の部分が反転している状態になります。 ってのがおかしいか・・・Cellsの部分で間違えてたら、その部分が反転しますもんね。 他にも書いてるコードがあるなら、一度全部アップしてみてください。 |
▼つん さん AKIさん こんばんわ 私も同じとこで止りましたが、 >Akiさんのコードをそのままコピペして、 >(変数の宣言部分では、配列の要素数を入れて) ↑これ入れたらまわりましたよ〜 Sub kkk() Dim j As Integer Dim A(1 To 12) As Integer Dim B(1 To 12) As Integer Dim C(1 To 12) As Integer ↑これと Dim A(12) As Integer Dim B(12) As Integer Dim C(12) As Integer ↑これ、どちらでもまわりました 'Dim A() As Integer 'Dim B() As Integer 'Dim C() As Integer ↑これはまわりませんでした For j = 1 To 12 A(j) = Cells(j + 3, 2) B(j) = Cells(j + 3, 3) C(j) = Cells(j + 3, 4) 'MsgBox j Next j End Sub 'ちがってたらごめんなさい。 じゃな!(by石鹸箱 採用!つんさんありがと) |
解決しました! というか、私がアホだった・・・ えっと、複数のマクロを連続実行する予定だったので、 使う変数は同じもんだしーと思って、 こんな感じにしちゃってました・・・。 Sub ○○ Dim A(12) As Integer Dim B(12) As Integer macro1 macro2 macro3 End Sub Sub macro1 (以下、質問文に書いたようなマクロ) End Sub Sub macro2 これってダメだったんですね(^^; まわるという返答をいただいてたので、 式以外の部分をいじくってみたんですが、 定義文をそれぞれmacro1、macro2の中に入れたらまわりました。 お騒がせしました(>< |