大佬教程收集整理的这篇文章主要介绍了无法弄清楚为什么在验证 If 语句时 VBA 会退出我的 For-Next 循环,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Sub Generate_Attribute_table()
Dim LastRow As Long
Dim i As Integer
Dim Nom As String
LastRow = Range("A1").End(xlDown).Row
For i = 2 To LastRow
If (Cells(i,"K").value) Then
Nom = Worksheets(1).Cells(i,"C").Value
ActiveWorkbook.Sheets.Add(After:=Worksheets(Sheets.Count)).name = Nom
Else
Cells(i,"K").SELEct
End If
Next i
End Sub
@H_772_2@它似乎工作得很好,但即使列中有其他 True,它在生成第一个工作表后也会停止。
@H_772_2@else case 是为了调试目的,因为我想看看发生了什么,它确认只要 if 语句被验证,循环就会停止。
@H_772_2@我尝试使用“Do until”循环来做同样的事情,但结果是一样的。
@H_772_2@我在这里错过了什么?我在网上找不到任何答案,所以任何帮助都会非常好。
@H_772_2@提前致谢。
ActiveSheet
的隐式引用,因此每次添加新工作表时,您的代码现在都在引用新工作表。
@H_772_2@添加一些对您打算使用的工作表的显式引用,例如:
LastRow = Sheets("Sheet1").Range("A1").End(xlDown).Row
@H_772_2@和
Sheets("Sheet1").Cells(i,"K").Value
,
Option Explicit
Sub Generate_Attribute_Table()
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = wb.Worksheets(1) ' wb.Worksheets("Sheet1")
' This (usually preferred) way will allow empty cells in the column.
Dim LastRow As Long: LastRow = sws.Cells(sws.Rows.Count,"A").End(xlUp).Row
Dim dsh As Object
Dim Nom As String
Dim i As Long
For i = 2 To LastRow
' If you use '(sws.Cells(i,"K").value)',an error will occur
' if there is not a Boolean in the cell.
If sws.Cells(i,"K").Value = True Then
Nom = sws.Cells(i,"C").Value
' Attempt to create a reference to the sheet named 'Nom'.
Set dsh = Nothing
On Error Resume Next
Set dsh = wb.Sheets(Nom)
On Error GoTo 0
' Test for existence.
if Dsh Is Nothing Then ' A sheet named 'Nom' doesn't exist.
wb.Worksheets.Add(After:=wb.Sheets(wb.Sheets.Count)).Name = Nom
'Else ' A sheet named 'Nom' already exists.
End If
End If
Next i
End Sub
,
@H_772_2@想通了!现在我觉得自己很愚蠢,我所要做的就是准确地确定我的细胞参考。简单地写:
If (ActiveWorkbook.Sheets(1).Cells(i,"K").value) Then
@H_772_2@它解决了一切。
,
@H_772_2@试试这个:
Sub Generate_Attribute_Table()
Dim LastRow As Long
Dim i As Integer
Dim Nom As String
Dim Sh As Worksheet
Set Sh = ActiveWorkbook.Worksheets("Sheet1")
LastRow = Range("A1").End(xlDown).row
For i = 2 To LastRow
If Sh.Cells(i,11).Value = True Then
Nom = Sh.Cells(i,3).Value
ActiveWorkbook.Sheets.Add(After:=Worksheets(Sheets.count)).Name = Nom
Else
'Cells(i,11).SELEct 'Commented because I don't see why you'd need it
End If
Next i
@H_772_2@结束子以上是大佬教程为你收集整理的无法弄清楚为什么在验证 If 语句时 VBA 会退出我的 For-Next 循环全部内容,希望文章能够帮你解决无法弄清楚为什么在验证 If 语句时 VBA 会退出我的 For-Next 循环所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。