VBA別館・Python別館
InputBoxで検索 - Tak
2018/07/29 (Sun) 14:28:53
今度は検索のプログラムを作ってみましょう。
① 住所録に柳田さんは居るか?
sheet上ですと、Find、Searchなどの関数が使えますが、VBAで論理的に考えてみましょう
VBAに一つずつやることをcode枠に書いていきます。
・その指示を出すCommandButton2を作ります--->図参照
・検索する文字列(人の姓)を決める(仮に柳田さんとします)--->VBAのinput関数で、使用者に質問します
・A列の上から順に、そのセルの姓が柳田さんと合致するかどうか調べます--->ここでfor~next、if文が出てきます
・合致すれば、セル(A3)に居りますとメッセージを出して、このプロシージャーを終わります --->メッセージ関数が出てきます
・いなければ、そのような人は居ませんとメッセージを出します
さぁ、頭の体操に考えてみて下さい。
Re: InputBoxの動作確認 - Tak
2018/07/30 (Mon) 08:03:30
② 柳田さんを検索しましょう
柳田さんはA3におります。 これをCellsで表すとCells(3,1)ですので、検索機能が働くかどうかのチェックをしてみます。
ここで新しい関数をご紹介します。 InputBoxと言う簡単な機能です。 codeの中に書くと長くなるので、変数bufに入れます。
Private Sub CommandButton2_Click()
Dim buf As String 文字列変数です
buf = InputBox("名前を入力してください")
Cells(3,7)=buf
End Sub
これでG3に名前が表示されれば成功です。
次回はfor~nextでinputboxで入力した人が、どのセルに居るかを検索します。
Re: InputBoxで検索 - Tak
2018/07/31 (Tue) 08:23:29
③ コマンドボタンの名前を変更しましょう
コマンドボタンが多くなると、何をやるボタンか分からなくなりますので、名前を変えましょう。
・開発-デザインモードと行き
・CommandButton2上でマウスの右ボタンをクリック-プロパティをクリック
・図の様にプロパティ画面が表示されますので、その中のCaptionを好きな名前に変更します
Re: InputBoxで検索 - Tak
2018/07/31 (Tue) 08:31:56
④ コマンドボタンの名称が変更されました
そしてこのボタンをクリックすると、無事セルG3に"柳田"と表示されましたね。
これで②のcodeが働いていることが確認されましたので、次は全員の名前との照合を行います。
Re: InputBoxで検索 - Tak
2018/07/31 (Tue) 19:14:45
⑤ 今度は入江さんを探してみます
codeを次に様に書きました。 説明を付けました。
----------------------------------
Private Sub CommandButton2_Click()
'姓の検索
Dim buf As String ’InputBoxの内容を格納する変数
Range("A:A").Interior.ColorIndex = 2 '検索で合致した場合、セルを赤く塗りますので、先ずそれを消しておきます
buf = InputBox("検索する人の姓を入れて下さい")
For i = 1 To 7 ’今回は7人しかおりませんので1~7です
If Cells(i, 1).Value = buf Then 'セルCells(1,1)がInputBoxで検索する人と合致したら・・・
Cells(i, 1).Interior.ColorIndex = 3 'そのセルを赤く染める
MsgBox (Cells(i, 1).Address & "におります") '合致したセル番地を表示する
Exit Sub ' 目的を達成したので、この処理は終了する
End If 'if文の終わりの宣言
Next '次の番号に移動する
MsgBox ("その名前の人はおりません") ’合致しなければ、"居ません"と表示
End Sub
------------------------------------------
他にもやり方は沢山ありますが、まず自分に理解し易いcodeで始めるのが一番です。