Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 代码未在工作表中成功循环_Excel_Vba_Loops - Fatal编程技术网

Excel 代码未在工作表中成功循环

Excel 代码未在工作表中成功循环,excel,vba,loops,Excel,Vba,Loops,此VBA 2007代码执行此任务,但仅针对第一个工作表,它不会在工作簿的其余工作表中循环(在其中,他正在查找值,并在第一个工作表中不存在该值但不应存在该值时返回错误)。谁能告诉我为什么?多谢各位 Set sourcewb = Workbooks.Open(Filename:=direccionArchivo) chakal = sourcewb.Index guapo = sourcewb.Worksheets.Count For

此VBA 2007代码执行此任务,但仅针对第一个工作表,它不会在工作簿的其余工作表中循环(在其中,他正在查找值,并在第一个工作表中不存在该值但不应存在该值时返回错误)。谁能告诉我为什么?多谢各位

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,这是没有意义的。请参阅我在新答案中更改的代码。