- ベストアンサー
回数の把握
VB6・DB:Access2002 Private Sub Command1_Click() j = 5 For i = 0 To 10 If Form1.Check1(i).Value = 1 Then xlSheet.Cells(j, 1) = Form1.Check1(i).Caption '次のレコードへ j = j + 2 [k = j] End If Next i End Sub 上記のようなコードを作成しているのですが、これでは 当然2回目にクリックイベントを実行した時にはj = 5 を通ってしまうため、最初のレコードからExcelへ書き 込んでしまいます。2回目からは[k = j]で代入した"k" の値を使用し、続きのレコードから書き込んでいきたい のですが、最初のjを通らせない、良い方法はありません か?よろしくお願いします。(すべて左側に寄っていて 見にくいようで申し訳ありませんが(汗))
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
jをグローバル変数にもたしてあげればいいだけでしょう。 General の Declarationsで 変数を宣言して 初期値をセットしてあげればいいだけです。 ま j = 5 だけでもいいと思いますが。 それで 最後の部分 Next i End Sub を Next i j = k End Sub としてあげればいいでしょう。
その他の回答 (2)
- Largo_sp
- ベストアンサー率19% (105/538)
Jをグーローバル変数にするのが、簡単かな... で、最初に定義しておく... 別にグローバル変数を作って何回目かのクリックを 判断させるというのもありますね... プライベート変数だけだど解決できないとおもいます。 変数の名前が違うかもしれないけど...
お礼
ありがとうございました。解決できました。
- PAPA0427
- ベストアンサー率22% (559/2488)
フォーム上に、一つ隠しのフィールド(テキストボックス)を作成し、VisibleをFalseにして置いてください。これを「A」と命名しておくことにします。初期値を5に設定して置いてください。 で、 Private Sub Command1_Click() j = Form1.A.Value For i = 0 To 10 If Form1.Check1(i).Value = 1 Then xlSheet.Cells(j, 1) = Form1.Check1(i).Caption '次のレコードへ j = j + 2 End If Next i Form1.A.Value = j End Sub となります。
お礼
今回時間がありませんでしたので、異なる方法で 解決しましたが、貴重なご意見ありがとうございました。
お礼
グローバルに持たせてはいるのですが Public j As Integer と、定義のみしか行っていませんでした。 j = 5 自体もグローバルで設定するようにして うまくいきました。 ありがとうございました。