繁体   English   中英

如何从循环VBA将变量分配给值

[英]How to assign variable to value from loop VBA

我的新手问题:

我将需要根据循环收集的值定义变量。 我有数据列,我需要过滤这些数据并将其复制到另一个以变量命名的工作表中。

问题是,我无法从循环中获取变量。 可能吗? 示例:变量为“ 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

谢谢!

您需要在循环中包括一个子例程调用才能使用该变量。 像这样..

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

使用以下数据:

在此处输入图片说明

I列中,这是一种获取空值之前的最后一项的方法:

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调用与变量相同时(即在一个Sub中,迭代器为“ a”的for一个Sub,而另一个Sub称为“ a “)。”

我更改了变量的名称,并且代码有效。

谢谢大家

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM