SPREADのCheckBoxで1つしか選択できないように制御するには?

解決


くま太郎  2005-12-08 20:39:04  No: 128691

今、VB6 の SPREAD Ver.6.0 で開発を行っています。
スプレッド上にチェックボックス型セルを配置して、
チェックできるのは一つだけ という処理を行いたいのですが
方法がわかりません。
過去ログを検索してみると、コーディングで制御するしか
ないですね・・・ということだったのでやってみたのですが

Private Sub spread_ButtonClicked(ByVal Col As Long, _
                 ByVal Row As Long,ByVal ButtonDown As Integer)
    With Me.spread
         For ix = 1 To .MaxRows
            .Row = ix: .Col = CKBtn: wCkFlg = .Value
            If wCkFlg = 1 Then
               If Row <> ix Then
                  .SetText CKBtn, ix, ""
               End If
             wCkFlg = 0
            End If
         Next ix
    End With

SET文のところで、再帰呼び出しが起こってしまいます。
どのように回避すればよいでしょう?
よろしくお願いいたします。


どう?  2005-12-09 02:35:00  No: 128692

Form側でフラグを追加(gFlg)

>With Me.spread
の前で
if gFlg = true then
 gFlg = false
 exit sub
end if

>.SetText CKBtn, ix, ""
の前で
gFlg = true

.SetTextで再帰をしていますから、その再帰の場合は
処理を抜けるというのはどうでしょうか?


くま太郎  2005-12-09 18:48:42  No: 128693

どう?さん、ありがとうございました。
お教えいただいた様にコーディングしたところ
上手くいきました。
あと、お尋ねしておきながら自分でもいろいろ
研究したところ、少々卑怯ではありますが

Private Sub spsMtbl_J_Click(ByVal Col As Long, ByVal Row As Long)
    With Me.spread
        'チェックを全てはずす
        For ix = 1 To .MaxRows
            .Row = ix : .Col = CKBtn : .Text = 0
        Next ix
        'チェックをつけ直す
        .Row = Row
        .Col = CKBtn
        If .Text = 1 Then
           .Text = 0
        Else
           .Text = 1
        End If
    End With

と、別のイベントで上記の方法を試してもできました。


くま太郎  2005-12-09 20:16:12  No: 128694

もし、このレスを参考にしようとなさった方へ

上記の処理は、クリックしたチェックボックスを
もう一度クリックしたとき、Clickイベントが
走らずに正しく処理が行われませんでした。

やはり どう?さんの意見をご参考にButtonClicked
イベントで処理したほうがよいかと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加