[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォーム内のチェックボックス検索機能について』(ミッキー)
いつもお世話になっております。
VBA初心者ですので、お手柔らかにお願いいたします。
今回ユーザーフォームのチェックボックスについて教えていただきたく
ご質問いたしました。
チェックボックスの項目が100個以上あるユーザーフォームを作成しまして、
そのフォーム内でテキストボックスを使用してチェックボックスの項目を
検索できるようにしました。
部分一致で検索できるようにしたのですが、その検索する文字が複数の
チェックボックスに含まれている場合、最初の項目で止まってしまいます。
例:
「1月」「2月」「3月」というチェックボックスがあった場合
"月"で検索すると最初の「1月」で検索が止まる。
いろいろ検索して、なんとか上記の状態の検索フォームは作成することが
できたのですが、繰り返しの検索にするにはどう作成したらいいのか
行き詰りました。
現在の状態が下記です。
Private Sub CommandButton1_Click()
Dim ctrl As Control
If TextBox1.Text = "" Then Exit Sub
For Each ctrl In UserForm1.Controls If TypeName(ctrl) = "CheckBox" Then If InStr(ctrl.Caption, TextBox1.text) Then ctrl.SetFocus Exit sub End If End If Next
MsgBox "見つかりませんでした。"
End Sub
また、検索で一致した項目にフォーカスが移るという仕様になっていますが、
それを点線のフォーカスではなく、チェックボックスの色を変えて表示する
ということは可能でしょうか?
つたない質問文で申し訳ありませんが、
何卒お力添えをよろしくお願いいたします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>繰り返しの検索にするにはどう作成したらいいのか
どう繰り返すのか意味が解りません。
>チェックボックスの色を変えて表示する
CheckBoxのプロパティを見れば良いと思うけど、そういうことはしないの? (BJ) 2019/04/05(金) 03:09
下手くそな質問の仕方で申し訳ありません。
つまり、「月」で検索して「3月」にフォーカスを移したいけれども、
先にある「1月」で検索が止まってしまいます。
これを同じ文字が含まれている項目を順番に検索できるように
したいと思っております。
要するにCtrl+fのようなイメージです。
>CheckBoxのプロパティを見れば良いと思うけど、そういうことはしないの?
すみません、フォーカスが当たっているチェックボックスの色を
プロパティで変えられるということを知りませんでした。
恐れ入りますが教えていただけますでしょうか?
よろしくお願い致します。
(ミッキー) 2019/04/05(金) 10:50
ボタン二つ追加して、次へ 前へとして こんなんでどうですか? Private defaultcolor As Long Private chkboxes() As Control 'CheckBox Private ibox As Long Private Sub UserForm_Initialize() Dim ctrl As Control ibox = -1 For Each ctrl In Me.Controls If TypeName(ctrl) = "CheckBox" Then defaultcolor = ctrl.ForeColor 'Exit For End If Next ctrl End Sub Private Sub CommandButton1_Click() '検索 Dim ctrl As Control ReDim chkboxes(0) ibox = -1 For Each ctrl In Me.Controls If TypeName(ctrl) = "CheckBox" Then If ctrl.Caption Like "*" & TextBox1.Value Then ibox = ibox + 1 ReDim Preserve chkboxes(ibox) Set chkboxes(ibox) = ctrl ctrl.ForeColor = vbRed Else ctrl.ForeColor = defaultcolor End If End If Next ctrl If ibox >= 0 Then chkboxes(0).SetFocus End Sub Private Sub CommandButton2_Click() '次のチェックボックスへ If ibox >= 0 Then ibox = IIf(UBound(chkboxes) = ibox, 0, ibox + 1) chkboxes(ibox).SetFocus End If End Sub Private Sub CommandButton3_Click() '前のチェックボックスへ If ibox >= 0 Then ibox = IIf(LBound(chkboxes) = ibox, UBound(chkboxes), ibox - 1) chkboxes(ibox).SetFocus End If End Sub 12:02差し替え (稲葉) 2019/04/05(金) 11:45
私がやりたいことが完璧に再現されました!!
本当にありがとうございます!!
(ミッキー) 2019/04/05(金) 13:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.