2015-01-05 2 views
1

Я работаю в VBA, и я хотел знать, можно ли создавать именовать переменные в цикле while. Моя цель - просмотреть конкретный столбец на листе и создать переменные, значения которых являются текстом внутри ячеек этого столбца.Создание переменных в цикле

В идеале, имена переменных и их значения были бы что-то вдоль линий:

party1 = "Owner" 
party2 = "Contractor" 
party3 = "Subcontractor" 

и так далее так далее, основываясь на количестве участников.

До сих пор у меня есть:

Dim i As Integer, j As Integer 
i = 2 
j = 1 
Do While Cells(i, 7).Value <> "" 
    Dim partyName As String 
    ' Pulls the text from the worksheet cell 
    partyName = Cells(i, 7).Text 
    Dim curNum As String 
    curNum = CStr(j) 
    Dim tempParty As String 
    tempParty = "party" & curNum 
    i = i + 1 
    j = j + 1 
Loop 

Я думаю, что это сводится к вопросу: Как я потом получить partyX быть имя переменной и значение переменной будет строка хранится в partyName?

This похоже, что это похоже на то, что я ищу, но это не совсем ответит на мой вопрос. Кроме того, я понимаю, что могут быть проблемы с объемом этих переменных, но я не могу придумать другого способа сделать это.

+0

Какие значения сохраняются на 'partyName '? – Chrismas007

+3

* Array' * это то, что вы хотите, они позволяют 'party (i) =" .. "' где 'i' является числом, см. Http://patorjk.com/programming/tutorials/vbarrays.htm –

+1

Вы не можете * создавать * переменные и называть их во время выполнения. Вы можете назначить альтернативный массив, коллекцию или словарь. Словарь технически позволит вам создавать «имена», но, вероятно, не обязательно, вы можете легко использовать массив. –

ответ

1

Если вам нужно, чтобы превратить имя в номер с помощью Select Case:

Dim CurRow As Long, LastRow As Long 
LastRow = Cells(Rows.Count, 7).End(xlUp).Row 

For CurRow = 1 to LastRow 
    partyName = Cells(i, 7).Value 
    Select Case partyName 
     Case "Owner" 
      partyNum = 1 
     Case "Contractor" 
      partyNum = 2 
     Case "Subcontractor" 
      partyNum = 3 
     Case Else 
    End Select 
    'Do something with partyNum here 
Next CurRow 

Если вам нужно повернуть число в ИМЕНИ с помощью Select Case:

Dim CurRow As Long, LastRow As Long 
LastRow = Cells(Rows.Count, 7).End(xlUp).Row 

For CurRow = 1 to LastRow 
    partyNum = Cells(i, 7).Value 
    Select Case partyNum 
     Case 1 
      partyName = "Owner" 
     Case 2 
      partyName = "Contractor" 
     Case 3 
      partyName = "Subcontractor" 
     Case Else 
    End Select 
    'Do something with partyName here 
Next CurRow 
+1

Это полезно, спасибо! Это похоже на то, что я делаю, и я смогу использовать первый случай позже в скрипте. – arlederman

Смежные вопросы