teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/03/10 09:17

投稿

mattuwan
mattuwan

スコア2167

answer CHANGED
@@ -74,4 +74,66 @@
74
74
  (同じプロシージャを再度実行する時も)、
75
75
  モジュールレベルで変数を宣言します。
76
76
 
77
- 参考になれば。。。
77
+ 参考になれば。。。
78
+
79
+ シート上用に改変しました。
80
+ ```ExcelVBA
81
+ Option Explicit
82
+
83
+ Dim mrngFind As Range
84
+ Dim mrngAfter As Range
85
+
86
+ Private Sub CommandButton1_Click()
87
+ Dim c As Range
88
+ Dim sKeyWord As String
89
+
90
+ sKeyWord = Me.TextBox1.Text
91
+ If mrngFind Is Nothing Then Setオブジェクト初期化
92
+ Set c = mrngFind.Find(sKeyWord, mrngAfter, , xlPart)
93
+ If c Is Nothing Then GoTo WayOut
94
+ With c
95
+ Application.Goto .Cells
96
+ Me.Label1.Caption = .Value
97
+ End With
98
+ Me.CommandButton1.Caption = "次へ"
99
+
100
+ Set mrngAfter = c
101
+ Exit Sub
102
+
103
+ WayOut:
104
+ MsgBox sKeyWord & "は見つかりませんでした。", vbExclamation
105
+ Setオブジェクト初期化
106
+ End Sub
107
+
108
+ Private Sub TextBox1_Change()
109
+ Me.CommandButton1.Enabled = Len(Me.TextBox1.Text)
110
+ Me.Label1.Caption = ""
111
+ End Sub
112
+
113
+ Private Sub TextBox1_LostFocus()
114
+ mFlg = False
115
+ End Sub
116
+
117
+ Private Sub Setオブジェクト初期化(Optional ByVal flg As Boolean = True)
118
+ If flg Then Me.TextBox1.Text = ""
119
+
120
+ Set mrngFind = Me.Range("D:D")
121
+ Set mrngAfter = mrngFind(mrngFind.Count)
122
+ Me.CommandButton1.Caption = "検索"
123
+ mFlg = False
124
+ End Sub
125
+ ```
126
+
127
+ 動作確認してたら、わけわかんなくなったので、
128
+ 期待通りの動きになってないかも^^;
129
+ 参考になれば。。。(ならないかも^^;)
130
+
131
+ ※注
132
+ 検索ボタンは何も入力されてない時はメッセージを出すのではなく、
133
+ そもそもボタンを押せないようにするといいです。
134
+ やたらとメッセージを出されると、使う側はうるさいし、
135
+ クリックをいちいち余分にしないといけなくなるので。
136
+ プロパティウィンドウで、
137
+ Enabledプロパティの初期値をFalseにしておきます。
138
+ Labelコントロールは、
139
+ コントロールの選択から探してください。