• ベストアンサー

回数の把握

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を通らせない、良い方法はありません か?よろしくお願いします。(すべて左側に寄っていて 見にくいようで申し訳ありませんが(汗))

質問者が選んだベストアンサー

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

jをグローバル変数にもたしてあげればいいだけでしょう。 General の Declarationsで 変数を宣言して 初期値をセットしてあげればいいだけです。 ま j = 5 だけでもいいと思いますが。 それで 最後の部分 Next i End Sub を Next i j = k End Sub としてあげればいいでしょう。

siamzou
質問者

お礼

グローバルに持たせてはいるのですが Public j As Integer と、定義のみしか行っていませんでした。 j = 5 自体もグローバルで設定するようにして うまくいきました。 ありがとうございました。

その他の回答 (2)

  • Largo_sp
  • ベストアンサー率19% (105/538)
回答No.2

Jをグーローバル変数にするのが、簡単かな... で、最初に定義しておく... 別にグローバル変数を作って何回目かのクリックを 判断させるというのもありますね... プライベート変数だけだど解決できないとおもいます。 変数の名前が違うかもしれないけど...

siamzou
質問者

お礼

ありがとうございました。解決できました。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

フォーム上に、一つ隠しのフィールド(テキストボックス)を作成し、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 となります。

siamzou
質問者

お礼

今回時間がありませんでしたので、異なる方法で 解決しましたが、貴重なご意見ありがとうございました。

関連するQ&A