|
こんばんは、何度も質問してすみません。
今回もよろしくお願いします。
元の表:
果物名
10001 キウィ
10002 りんご
10003 いちご
10004 ぶどう
10005 バナナ
10003 いちご
10003 いちご
10008 すいか
10002 りんご
10002 りんご
10008 すいか
で、果物名を他のものに書き変えたい時、一気にできるように下記の
コードを作りました。
Sub 品書き換え()
Dim top As Integer
Dim botm As Long
Dim data As Integer
Dim msg1 As String
Dim msg2 As String
Application.ScreenUpdating = False
Sheets("sheet1").Activate
If ActiveSheet.AutoFilterMode = True Then
Range("A2").Select
Selection.AutoFilter
End If
msg1 = InputBox("修正したい果物を入力してください" _
& Chr(13) & "先頭の文字のみ入力でかまいません", "果物の検索", , 100, 100)
If msg1 = "False" Then Exit Sub
With Worksheets("sheet1")
Range("A2").Select
Selection.AutoFilter Field:=2, _
Criteria1:=msg1 & "*"
With .AutoFilter.Range
top = .Offset(1).SpecialCells(xlCellTypeVisible).Row
If Worksheets("sheet1").Range("B" & top).Value = "" Then
MsgBox "該当するものがありません" _
& Chr(13) & "再度検索してください", vbOK, "データ"
Selection.AutoFilter
Worksheets("sheet1").Select
Exit Sub
Else
msg2 = InputBox("修正後の果物を入力してください" _
& Chr(13) & "例)いちご", "果物の修正", , 100, 100)
If msg2 = "False" Then Exit Sub
botm = Cells(Rows.Count, 1).End(xlUp).Row
For data = top To botm
If Worksheets("sheet1").Rows(data).Hidden = False Then
Range("B" & data).Select
Selection.Value = msg2
End If
Next data
End If
End With
End With
End Sub
上記のように書くと、果物名をいれたときは間違いなく動くのですが、
inputboxのキャンセルボタンを押した場合、ムシされて
そのまますべての値を空欄に書き換えてしまいます。
Inputboxは二つ出てきていますが、どちらもキャンセルがムシされます。
どこがおかしいのかご指摘いただけませんでしょうか?
|
|