我的新手问题:
我需要根据循环收集的值定义变量。 我有数据列,我需要过滤这些数据并复制到另一个名为变量的新工作表。
问题是,我无法从循环中获取变量。 可能吗? 示例:变量为“hu”
i = 2
Do Until IsEmpty(Cells(i, 9))
**hu** = Cells(i, 9).Value
i = i + 1
Loop
ActiveWorkbook.Worksheets.Add
ActiveSheet.Name = **hu**
Worksheets("Sheet1").Range("A1:I1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$I$1").AutoFilter Field:=9, Criteria1:=**hu**
With ActiveSheet.AutoFilter.Range
On Error Resume Next
Set rng2 = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
If rng2 Is Nothing Then
MsgBox "No data to copy"
Else
Set rng = ActiveSheet.AutoFilter.Range
rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
Destination:=Worksheets("Comparison2").Range("A2")
End If
ActiveSheet.ShowAllData
谢谢!
答案 0 :(得分:0)
您需要在循环中包含子例程调用才能使用该变量。 像这样......
Option Explicit
Sub do_it()
Dim hu As String
Dim i As Integer
i = 2
Cells(i, 9).Select
Do Until IsEmpty(Cells(i, 9))
hu = Cells(i, 9).Value
get_worksheet (hu)
i = i + 1
Loop
End Sub
Sub get_worksheet(name)
ActiveWorkbook.Worksheets.Add
..etc
end sub
答案 1 :(得分:0)
使用以下数据:
在我专栏中,这是一种在空白之前获取最后一项的方法:
Sub marine()
i = 2
Do Until Cells(i, 9).Value = ""
hu = Cells(i, 9).Value
i = i + 1
Loop
MsgBox hu
End Sub
答案 2 :(得分:0)
好的我用谷歌搜索并发现了问题,错误信息是由于"当一个Sub被称为与变量相同时也会发生这种错误(即在一个Sub中你用循环与迭代器" a& #34;,而另一个Sub被称为" a")。"
我更改了变量的名称,代码也有效。
感谢所有人