0

使用下面的代码,我正在尝试执行以下操作:

  • 查找与第一个 IF 语句匹配的文件
  • 在 wbkOut 中,转到第 2 列并找到第一个包含数据的单元格(底部,向上)并为其分配一个值,以便我们稍后可以将其引用为开始执行循环的位置
  • 在 wbkVer 中,找到第一个有数据的单元格,向下偏移 1 个单元格,从 wbkout 调整数据的大小仅为 1 个单元格
  • 然后将 wbkOut 单元格的值添加到 wbkVer 单元格
  • 以上所有作品
  • 没用的是下一块
  • 如果脚本已运行,则将要粘贴的单元格偏移一个..并将 wbkOut 单元格向上偏移一个单元格并开始寻找下一个带有数据的单元格,等等...
  • 做直到tenln 不再有值

我无法让循​​环正常工作,建议?谢谢!

编辑:我可以得到前 2 个值,然后循环无限期地运行,没有找到其他任何东西。

Dim strOutputFile As Variant
Dim wbkOut As Workbook
Dim tenln As Range
Dim tenlnPaste As Range
Dim hasRun As Boolean
Dim wbkVer As Workbook

    If strOutputFile(u) Like "*Lines.csv" Then
        With wbkOut.Worksheets(1)
        Set tenln = wbkOut.Worksheets(1).Cells(Rows.Count, 2).End(xlUp)
        Set tenlnPaste = wbkVer.Worksheets("TLines").Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(tenln.Rows.Count, 1)
            tenlnPaste.Value = tenln.Value
        hasRun = True
        Do
            If hasRun = True Then
            With wbkOut.Worksheets(1)
                tenlnPaste.Offset(1, 0).Value = tenln.Offset(-1, 0).End(xlUp).Value
            End With
            End If
        Loop Until tenln.value = ""
        End With
    End If
4

1 回答 1

0

您所写内容的 do 循环的问题在于您没有进行修改tenln,因此您在开始时设置的任何值都将保持不变并且tenln = ""始终为 false

如果我正确阅读了这个tenlnsa range 对象,那么您可以使用 for 循环。

For each c in tenln.cells

  'your code here
  If c.value = "" then exit for
Next
于 2013-01-15T13:42:24.290 回答