如何从循环VBA中赋值给variables

我的新手问题:

我需要从循环收集的值定义variables。 我有数据列,我需要过滤这些数据,并复制到另一个名为variables的新工作表。

问题是,我不能从循环variables。 可能吗? 例如:variables是“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 

谢谢!

你需要在你的循环中包含一个子程序调用来使用variables。 像这样的东西

 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 

有了这样的数据:

在这里输入图像说明

在第一列中,这是在空白之前获取最后一个项目的一种方法:

 Sub marine() i = 2 Do Until Cells(i, 9).Value = "" hu = Cells(i, 9).Value i = i + 1 Loop MsgBox hu End Sub 

好吧,我GOOGLE了,发现问题,错误信息是由于“这个错误也发生时,一个Sub被称为variables相同(即在一个Sub中你有for循环迭代器”a“,而另一个Sub被称为”一“)。”

我改变了variables的名称和代码作品。

谢谢大家