Excel 代码未在工作表中成功循环
此VBA 2007代码执行此任务,但仅针对第一个工作表,它不会在工作簿的其余工作表中循环(在其中,他正在查找值,并在第一个工作表中不存在该值但不应存在该值时返回错误)。谁能告诉我为什么?多谢各位Excel 代码未在工作表中成功循环,excel,vba,loops,Excel,Vba,Loops,此VBA 2007代码执行此任务,但仅针对第一个工作表,它不会在工作簿的其余工作表中循环(在其中,他正在查找值,并在第一个工作表中不存在该值但不应存在该值时返回错误)。谁能告诉我为什么?多谢各位 Set sourcewb = Workbooks.Open(Filename:=direccionArchivo) chakal = sourcewb.Index guapo = sourcewb.Worksheets.Count For
Set sourcewb = Workbooks.Open(Filename:=direccionArchivo)
chakal = sourcewb.Index
guapo = sourcewb.Worksheets.Count
For z = chakal To guapo
Set ws = Sheets(z)
sourcewb.Columns(1).Value = Application.WorksheetFunction.Clean(sourcewb.Columns(1))
Set gCell = ws.Columns("A").Find(what:=IDPEDIDO, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, searchformat:=False)
If Not gCell Is Nothing Then
'OTHER CODE NOT DISPLAYED
end if
Next z
Set gCell = Nothing
我认为应该是这样,尽管它仍然不起作用
Set sourcewb = Workbooks.Open(Filename:=direccionArchivo)
chakal = 1
guapo = sourcewb.Worksheets.Count
For z = chakal To guapo
Set ws = sourcewb.Sheets(z)
'This will not work, clean expects a string not a range (a column is a range)
ws.Columns(1).Value = Application.WorksheetFunction.Clean(ws.Columns(1))
Set gCell = ws.Columns("A").Find(what:=IDPEDIDO, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, searchformat:=False)
If Not gCell Is Nothing Then
'OTHER CODE NOT DISPLAYED
end if
Next z
Set gCell = Nothing
首先,clean函数在complete列上不起作用。必须循环遍历列中的每个单元格,并使用worksheetfunction.clean(cell.value)。其次,您没有为工作表使用正确的对象模型,即workbook.worksheets.range。我已更正了您的代码,如下所示:
Sub t()
Dim sourcewb As Workbook
Dim ws As Worksheet
Set sourcewb = Workbooks.Open(Filename:=direccionArchivo)
guapo = sourcewb.Worksheets.Count
For Z = 1 To guapo
Set ws = sourcewb.Sheets(Z)
endrow = ws.Cells(Rows.Count, 1).End(xlUp).Row
For Each cell In ws.Range(ws.Cells(1, 1), ws.Cells(endrow, 1))
WorksheetFunction.Clean (cell)
Next cell
Set gCell = ws.Columns("A").Find(what:=IDPEDIDO, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, searchformat:=False)
If Not gCell Is Nothing Then
'OTHER CODE NOT DISPLAYED
End If
Next Z
Set gCell = Nothing
End Sub
你没有得到一个错误?sourcewb.columns(1)应给出一个错误。工作簿没有列。这必须是ws.columns(1)在几个地方。好吧,也许这是for(在另一个for中)中,它会起作用。我还认为chakal应该是1。现在它被设置为工作簿的索引,如果使用chakal在工作表中循环:对于z=1到sourcewb.worksheets.count,这是没有意义的。请参阅我在新答案中更改的代码。