การสร้างตัวแปรภายในลูป

ฉันทำงานใน VBA และต้องการทราบว่าคุณสามารถสร้างและตั้งชื่อตัวแปรภายใน while loop ได้หรือไม่ เป้าหมายของฉันคือการดูคอลัมน์ใดคอลัมน์หนึ่งในแผ่นงานและสร้างตัวแปรที่มีค่าเป็นข้อความภายในเซลล์ของคอลัมน์นั้น

ตามหลักการแล้ว ชื่อตัวแปรและค่าของตัวแปรจะมีลักษณะดังนี้:

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 ได้อย่างไร

นี่ดูเหมือนว่าจะสอดคล้องกับสิ่งที่ฉันกำลังมองหา แต่มันไม่ตอบคำถามของฉันเลย นอกจากนี้ ฉันทราบดีว่าขอบเขตของตัวแปรเหล่านี้อาจมีปัญหา แต่ฉันไม่สามารถคิดวิธีอื่นในการทำเช่นนี้ได้


person arlederman    schedule 05.01.2015    source แหล่งที่มา
comment
ค่าใดบ้างที่ถูกเก็บไว้ใน partyName?   -  person Chrismas007    schedule 05.01.2015
comment
Array คือสิ่งที่คุณต้องการ โดยอนุญาตให้ party(i) = ".." โดยที่ i เป็นตัวเลข โปรดดูที่ patorjk.com/programming/tutorials/vbarrays.htm   -  person Alex K.    schedule 05.01.2015
comment
คุณไม่สามารถ สร้าง ตัวแปรและตั้งชื่อตัวแปรในระหว่างรันไทม์ได้ คุณสามารถกำหนดให้กับอาร์เรย์ตัวแปร คอลเลกชัน หรือออบเจ็กต์พจนานุกรมได้ ในทางเทคนิคแล้วพจนานุกรมจะอนุญาตให้คุณสร้างชื่อได้ แต่อาจไม่จำเป็น เพราะคุณสามารถใช้อาร์เรย์แทนได้อย่างง่ายดาย   -  person David Zemens    schedule 05.01.2015
comment
ฉันคิดว่ามันคงจะง่ายกว่านี้ถ้าเขาใช้ 'Select Case' เมื่อเขามีคุณค่าของปาร์ตี้จากสิ่งที่ฉันถือว่าคือ 'partyName'   -  person Chrismas007    schedule 05.01.2015
comment
@Chrismas007 partyName เก็บสตริง (เช่น เจ้าของ ผู้รับเหมา ฯลฯ) ฉันคิดว่าอาร์เรย์จะทำงาน ฉันจะหาคำตอบว่า 'เลือกกรณี' คืออะไร ขอบคุณทุกคน!   -  person arlederman    schedule 05.01.2015


คำตอบ (1)


หากคุณต้องการเปลี่ยน NAME ให้เป็น NUMBER โดยใช้ 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

หากคุณต้องการเปลี่ยน NUMBER ให้เป็น NAME โดยใช้ 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
person Chrismas007    schedule 05.01.2015
comment
สิ่งนี้มีประโยชน์ ขอบคุณ! มันคล้ายกับสิ่งที่ฉันกำลังทำอยู่ และฉันจะสามารถใช้กรณีแรกในสคริปต์ได้ในภายหลัง - person arlederman; 05.01.2015