過去ログ

                                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文の()の中を数字(データの個数)にしてみたり、
いろいろ変えてみたりもしたのですが、
結果は同じでした。
どこを変えればいいのでしょうか?

初級者なので、効率よりも自分のわかる範囲の構文でマクロを組んでいます。
できるだけ初級向けの構文で教えていただけると幸いです。

よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:変数の中に変数を使用するには?  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/7(土) 22:31  -------------------------------------------------------------------------
   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については、ヘルプを読んでみてね。
(上手く説明できへんし・・・・ごめん^^;)
 ───────────────────────────────────────  ■題名 : Re:変数の中に変数を使用するには?  ■名前 : Aki  ■日付 : 02/9/10(火) 16:05  -------------------------------------------------------------------------
   お返事ありがとうございます。
まわりますか・・・(^^;
インストールし直した方がいいのかな・・・(汗

>Akiさんのコードをそのままコピペして、
>(変数の宣言部分では、配列の要素数を入れて)
>試してみましたが、こちらでは上手く行きましたよ?
>どの行でエラーが出ましたか?

えと、
デバッグの矢印がSubのところを差してて、
A(j) =の部分が反転している状態になります。

何がまずいんだろ・・・。
 ───────────────────────────────────────  ■題名 : うーーーーん(>_<)  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/10(火) 16:48  -------------------------------------------------------------------------
   こんにちは

うーーん(>_<) 何がまずいんでしょうね?
今、念のため会社のマシンで試してもOKでしたよ。

原因・・・思いあたらないなあ。

エラーメッセージは
「Sub または Functionの定義がされていません」
なんですよね?

A(j) = Cells(j + 3, 2)

の右側で何か間違えてませんか?
例えば、Cellsのスペルを間違えてたら、そのエラーが出ますけど・・・
それでも、
>A(j) =の部分が反転している状態になります。
ってのがおかしいか・・・Cellsの部分で間違えてたら、その部分が反転しますもんね。

他にも書いてるコードがあるなら、一度全部アップしてみてください。
 ───────────────────────────────────────  ■題名 : Re:私もまわりませんでしたが  ■名前 : ひで  ■日付 : 02/9/10(火) 17:59  -------------------------------------------------------------------------
   ▼つん さん 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石鹸箱 採用!つんさんありがと)
 ───────────────────────────────────────  ■題名 : Re:変数の中に変数を使用するには?  ■名前 : Aki  ■日付 : 02/9/10(火) 23:56  -------------------------------------------------------------------------
   解決しました!
というか、私がアホだった・・・

えっと、複数のマクロを連続実行する予定だったので、
使う変数は同じもんだしーと思って、
こんな感じにしちゃってました・・・。

Sub ○○
  Dim A(12) As Integer
  Dim B(12) As Integer

  macro1
  macro2
  macro3
End Sub
Sub macro1

(以下、質問文に書いたようなマクロ)
End Sub
Sub macro2

これってダメだったんですね(^^;

まわるという返答をいただいてたので、
式以外の部分をいじくってみたんですが、
定義文をそれぞれmacro1、macro2の中に入れたらまわりました。
お騒がせしました(><
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 61