【最大10000ポイント】当たる!!質問投稿キャンペーン!

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

A 回答 (3件)

jをグローバル変数にもたしてあげればいいだけでしょう。



General の Declarationsで
変数を宣言して 初期値をセットしてあげればいいだけです。

j = 5
だけでもいいと思いますが。

それで 最後の部分
Next i

End Sub


Next i
j = k
End Sub

としてあげればいいでしょう。
    • good
    • 0
この回答へのお礼

グローバルに持たせてはいるのですが
Public j As Integer
と、定義のみしか行っていませんでした。

j = 5 自体もグローバルで設定するようにして
うまくいきました。

ありがとうございました。

お礼日時:2003/05/14 14:32

Jをグーローバル変数にするのが、簡単かな...


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

変数の名前が違うかもしれないけど...
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/05/14 14:33

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

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

お礼日時:2003/05/14 14:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング