루프에 문제가 있습니다. 워크 시트를 만들고 인쇄하고 (아직 작성하지 않은 채, 어떻게 작동하는지) 삭제 한 다음 삭제하고 싶습니다. 그 후 같은 일을하기 위해 다음 j로 진행하십시오. 그러나 그것은 j = 1에서 1로 되돌아 가고 있으므로 "print"라는 두 번째 워크 시트를 만들려고하고 있지만 불가능합니다.VBA for 루프가 작동하지 않습니다.
이름이 CheckBox1, CheckBox2, CheckBox'j '인 체크 박스가 있습니다. CheckBox1로 시작하고 CheckBox25로 끝내고 싶습니다. 그것이 사실이라면 시트를 인쇄하십시오.
는 내가 들어 처음 없애 필요가 있다고 생각 : Me.Controls
에서 각 Ctrl 키를 들어
그러나 나는 방법을 모른다. 변수 'j'를 지정해야하기 때문에.
Private Sub PrintKnop_Click()
Dim ctrl As MSForms.Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" And Left(ctrl.Name, 8) = "CheckBox" Then
Dim j As Integer
j = Mid(ctrl.Name, 9, 2)
For j = 1 To 1
'it should be possible to adjust the range.
If ctrl.Value = True Then
Dim ws As Worksheet
With ThisWorkbook
Worksheets("Veiligheid").Copy _
before:=ActiveWorkbook.Sheets("Data")
Set ws = ActiveSheet
ws.Name = "print"
End With
'Application.DisplayAlerts = False
'Sheets("print").Delete
'Application.DisplayAlerts = True
'These shouldn't be comments, but if I uncomment it, it won't show the failures.
End If
Next
For j = 2 To 4
If ctrl.Value = True Then
With ThisWorkbook
Worksheets("Veiligheid").Copy _
before:=ActiveWorkbook.Sheets("Data")
Set ws = ActiveSheet
ws.Name = "printen"
End With
'Application.DisplayAlerts = False
'Sheets("printen").Delete
'Application.DisplayAlerts = True
End If
Next
End If
Next
End Sub
바로 다음 행에서 for 루프의 인덱스로'j'를 사용한다면'j = Mid (ctrl.Name, 9, 2)'의 점은 무엇입니까? 어떤 경우에도'For j = 1 To 1 '은 한 번만 실행될 것이지만 아마 여러 번 실행될 수있는 더 큰 루프에 포함됩니다. 나는 그 질문이 아주 불분명하다고 본다. 코드를 한 번만 실행하려면 루프에 넣지 마십시오. –
그 값을 찾고자 할 경우 다음 대신에 대문자 선택을 사용하고 싶습니다. https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/select-case- statement # example – Clyde