【问题标题】:How to assign variable to value from loop VBA如何从循环VBA将变量分配给值
【发布时间】:2023-04-05 06:54:01
【问题描述】:

我的新手问题:

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

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

谢谢!

【问题讨论】:

  • 您到底在哪里遇到错误?
  • 我是否正确理解您的问题是您需要变量 hu 的多个值,但您只得到一个(最后一个)?这就是事情的工作方式——“正常”变量只能存储一个值。您需要 1) 扩展 LOOP 以便它为所有代码运行;或者 2) hu 需要是一个 ARRAY 以便它可以存储多个值。
  • 我收到此错误:“编译错误:预期函数或变量”我无法继续开发宏,因为我收到此错误

标签: excel vba loops variables


【解决方案1】:

好的,我用谷歌搜索并发现了问题,错误消息是由于“当 Sub 被称为与变量相同时也会发生此错误(即在一个 Sub 中,您有 for 循环与迭代器“a”,而另一个 Sub 是称为“a”)。”

我更改了变量的名称,代码工作正常。

谢谢大家

【讨论】:

    【解决方案2】:

    使用如下数据:

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

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

    【讨论】:

    • 嗨,到部分“hu = Cells(i, 9).Value” 我收到此错误消息:编译错误:预期的函数或变量:(该代码是否适合您?如果是,请执行我需要以某种方式更改我的 VBA 设置?谢谢
    【解决方案3】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多