简体   繁体   中英

How to assign variable to value from loop VBA

my newbie question:

I would need to define variable from values gathered by loop. I have column of datas, and I need to filter those data and copy to another new sheet named with variable.

Problem is, I cannot get variable from loop. Is it possible? Example: variable is "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

Thanks!

You need to include a subroutine call within your loop to use the variable. Something like this ..

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

With data like:

在此处输入图片说明

In column I , this is a way to get the last item before the empty:

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

   MsgBox hu
End Sub

Ok I googled and found out the problem, error message was due to "This error happens also when a Sub is called the same as variable (ie in one Sub you have for loop with iterator "a", whilst another Sub is called "a")."

I changed the name of variable and code works.

Thanks to everyone

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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