gpt4 book ai didi

vba - Excel InputBox VBA取消功能

转载 作者:行者123 更新时间:2023-12-03 08:13:28 32 4
gpt4 key购买 nike

我有一个运行良好的宏。但是我遇到的问题是InputBox。当用户在InputBox中按下 CANCEL X 时,宏运行出错。我该怎么做才能阻止这种情况的发生。如果用户按下 X 取消,则过程应结束,即。退出子。我的代码如下:

Sub FindValues()    
Dim LSearchRow As Integer
Dim rw As Integer, cl As Range, LSearchValue As Long, LCopyToRow As Integer
Dim iHowMany As Integer
Dim aSearch(15) As Long
Dim i As Integer

' clear the sheets before it runs so to accurate number of funds opend.

Sheet2.Cells.ClearContents
Sheets("tier 2").Cells.ClearContents
Sheets("tier 3").Cells.ClearContents
Sheets("tier 4").Cells.ClearContents
Sheets("tier 5").Cells.ClearContents

On Error GoTo Err_Execute
FixC
Sheet2.Cells.Clear
Sheet1.Select
iHowMany = 0
LSearchValue = 99

'this for the end user to input the required A/C to be searched

Do While LSearchValue <> 0
LSearchValue = InputBox("Please enter a value to search for. Enter a zero to indicate finished" & _
"entry.", "Enter Search value")
If LSearchValue <> 0 Then
iHowMany = iHowMany + 1
If iHowMany > 15 Then
MsgBox "You are limited to 15 search numbers.", vbOKOnly, "Limit reached"
iHowMany = 15
Exit Do
End If
aSearch(iHowMany) = LSearchValue
End If
Loop

If iHowMany = 0 Then
MsgBox "No selections entered.", vbOKOnly + vbCritical, "No Search data"
Exit Sub
End If

LCopyToRow = 2

For rw = 1 To 1555
For Each cl In Range("D" & rw & ":M" & rw)
'------------------------------------------------
For i = 1 To iHowMany
Debug.Print cl.Row & vbTab & cl.Column
LSearchValue = aSearch(i)
If cl = LSearchValue Then
cl.EntireRow.Copy
'Destination:=Worksheets("Sheet2")
'.Rows(LCopyToRow & ":" & LCopyToRow)
Sheets("Sheet2").Select
Rows(LCopyToRow & ":" & LCopyToRow).Select
'Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
Sheets("Sheet1").Select
End If
Next i
'LSearchRow = LSearchRow + 1
Next cl
Next rw
'Position on cell A3
'Application.CutCopyMode = False
'Selection.Copy
Sheets("Sheet2").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False
Sheet2.Select
MsgBox "All matching data has been copied."
Exit Sub

最佳答案

您需要检查LSearchValue是否为空。使用此做循环

Do While LSearchValue <> 0
LSearchValue = InputBox("Please enter a value to search for. Enter a zero to indicate finished" & _
"entry.", "Enter Search value")

If LSearchValue = "" Then
Exit Do '<~~ Or Exit Sub if you want to terminate the sub
ElseIf LSearchValue <> 0 Then
iHowMany = iHowMany + 1
If iHowMany > 15 Then
MsgBox "You are limited to 15 search numbers.", vbOKOnly, "Limit reached"
iHowMany = 15
Exit Do
End If
End If
Loop

关于vba - Excel InputBox VBA取消功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982515/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com