OKボタン

Private Sub CommandButton1_Click()
aa = 2

Dim Mynumber As String

Dim i As Long

Do While aa <= ThisWorkbook.Worksheets.Count

Mynumber = UserForm1.TextBox1.Text

Worksheets(aa).Activate

Range("B3").Select
If Len(Mynumber) = 0 Then Exit Sub
Mynumber = "*" & Mynumber & "*"
For i = Cells(3, 2).End(xlDown).Row To 2 Step -1
If i < 3 Then
aa = aa + 1
Exit For
Else
With Cells(i, 2)
If .Value Like Mynumber Then
.Activate
Exit Sub
End If
End With
End If
Next i
Loop
MsgBox "一致データはありません"
End Sub

 

まず、OKボタンのオブジェクト名を確認します。

↓のように、UserForm1のOKボタンをクリックして、左のオブジェクト名を確認してください。

OKボタンのオブジェクト名はCommandButton1なので、CommandButton1をクリックした場合の

プログラムを書いていきます。

(ボタンを作成した順番が違っていて、CommandButton2になっています、という場合は、以下のCommandButton1

の部分を2に変更して作成すればOKです)

 

まず、Visual Basicの画面で①のUserFormの部分をダブルクリックします。

次に②の”コードの表示”というボタンをクリックし、③と④が↓のようなメニューになるように

プルダウンを選択します。

 

あとは、上記のように、プログラムを入力するだけなのですが、簡単にプログラムの説明も追記しておきます。

まず、

aa=2

の”aa”は、シートが前から数えて何枚目か、という変数を割り当てています。

aa=2という初期値を与えることで、2枚目のシート、つまり今月分のシートから検索をはじめます。

Do While aa <= ThisWorkbook.Worksheets.Count

というのは、aaの値が、このワークブックに含まれる、ワークシートの枚数(Worksheets.Count)を

超えない限り、検索を続けます、という意味です。

Mynumberには、検索ワードを入力します。

さらに

Mynumber = "*" & Mynumber & "*"

と、入力することで、完全一致ではなく、部分一致の摘要名に関しても検出することができます。

↑の*は、不特定の文字を表しています。

For i = Cells(3, 2).End(xlDown).Row To 2 Step -1

は、2行目の末端の行から、1行ずつ上に向かって移動して、2行目にたどり着くまで、

プログラムを続けます、という意味です。

If i < 3 Then
aa = aa + 1
Exit For

は、2行目までたどり着いた時点で、検出のプログラムを終了し、次のシートへ移行します、

という意味です。

With Cells(i, 2)
If .Value Like Mynumber Then
.Activate
Exit Sub
End If
End With

は、検索ワードが発見されれば、そのセルをアクティブにして、プログラムを終了しなさい

と、いう意味です。

Next i
Loop

は、次の行へ行きなさい、という命令です。

MsgBox "一致データはありません"

は、Do~Loopの外にあるので、

Do While aa <= ThisWorkbook.Worksheets.Count

↑に当てはまらない場合、つまり、aaの数が、ブックに含まれるシート数を超えてしまった時点で

一致データはありませんというメッセージを出力して、プログラム終了となります。

 


inserted by FC2 system