1
다음과 같은 Sub가 있습니다. 범위가 88 셀 미만인 경우 제대로 작동합니다. 그렇지 않으면 88 번째 반복이 실패합니다.VBA 루프가 88 번째 반복에서 실패합니다.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 And Target.Row >= 3 And Target.Row <= 30 And Target.Column >= 17 And Target.Column < 22 Then
i = Target.Row
Dim MergeGroups As Range
Dim GroupTable As Range
Dim rngStart As Range
Dim rngEnd As Range
Dim rngToCount As Range
Dim CurrentGrp As Range
Dim NextGrp As Range
Dim NumVals As Integer
Set MergeGroups = Range("A1:O1")
Set GroupTable = Range("Q2:V2")
Set CurrentGrp = Range(Cells(GroupTable.Row, ActiveCell.Column).Address)
Set NextGrp = Range(Cells(GroupTable.Row, ActiveCell.Column + 1).Address)
Set rngStart = MergeGroups.Find(CurrentGrp.Value)
Set rngEnd = MergeGroups.Find(NextGrp.Value)
Set rngToCount = Range(Cells(ActiveCell.Row, rngStart.Column), Cells(ActiveCell.Row, rngEnd.Column - 1))
' rngToCount.Font.Bold = True
NumVals = Application.WorksheetFunction.CountA(rngToCount)
Cells(i, ActiveCell.Column).Value = NumVals
ActiveCell.Offset(1, 0).Select
Do While ActiveCell.Column < 21
ActiveCell.Offset(-28, 1).Select
Loop
End If
End Sub
IT는 SelectionChange
이벤트를 활용, 하나의 특정 워크 시트의 개체입니다. 실패하면 다음과 같은 오류 메시지가 나타납니다.
런타임 오류 '-2147417848 (80010108)': 'Range'개체의 '찾기'메서드가 실패했습니다.
문제는 라인이다 :
Set rngStart = MergeGroups.Find(CurrentGrp.Value)
사람이 하위 특정 반복 주위에 실패, 그렇지 않으면 작은 범위에 대해 잘 실행,하지만 왜 내가 운동 도와 드릴까요?
루프에서 다른 셀을 선택할 때마다 동일한 하위가 호출됩니다. 선택을 사용하지 않고이 작업을 수행하는 방법을 파악하거나 루프를 수행하는 동안 이벤트를 사용하지 않도록 설정하고 하위를 종료하기 전에 사용하도록 설정해야합니다. –
@ Mat'sMug에 많은 감사를드립니다! 나는 그 대답을 완전히 이해하지 못했다고 고백해야하지만, 그것은 올바른 방향으로 나를 설정했다 - [이 링크] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in- excel-vba-macros)는 도움이되었습니다. 왜냐하면'.Select'에 대해 무엇이 그렇게 악한지 이해할 수 없었기 때문입니다. 이제는 제대로 작동한다고 생각합니다. 제대로 테스트 한 즉시 여기에 새 코드를 게시 할 것입니다. – rngeta453