Membuat variabel dalam satu lingkaran

Saya bekerja di VBA dan saya ingin tahu apakah mungkin membuat dan memberi nama variabel dalam loop sementara. Tujuan saya adalah melihat kolom tertentu di lembar kerja dan membuat variabel yang nilainya berupa teks di dalam sel kolom tersebut.

Idealnya, nama variabel dan nilainya adalah seperti ini:

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

Begitu seterusnya berdasarkan sejumlah pihak.

Sejauh ini saya punya:

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

Saya pikir ini mengarah pada pertanyaan: Bagaimana cara menjadikan partyX menjadi nama variabel dan nilai variabel menjadi string yang disimpan di partyName?

Ini sepertinya sesuai dengan apa yang saya cari, tapi itu tidak cukup menjawab pertanyaanku. Selain itu, saya menyadari mungkin ada masalah dengan cakupan variabel-variabel ini, namun saya tidak dapat memikirkan cara lain untuk melakukan ini.


person arlederman    schedule 05.01.2015    source sumber
comment
Nilai apa yang disimpan di partyName?   -  person Chrismas007    schedule 05.01.2015
comment
Array adalah yang Anda inginkan, mereka mengizinkan party(i) = ".." di mana i adalah angka, lihat patorjk.com/programming/tutorials/vbarrays.htm   -  person Alex K.    schedule 05.01.2015
comment
Anda tidak dapat membuat variabel dan menamainya saat runtime. Anda dapat menetapkan ke array varian, koleksi, atau objek kamus. Kamus secara teknis memungkinkan Anda membuat nama, tetapi mungkin tidak perlu, Anda dapat dengan mudah menggunakan array.   -  person David Zemens    schedule 05.01.2015
comment
Saya pikir akan lebih mudah jika dia hanya menggunakan 'Select Case' setelah dia mendapatkan nilai party dari apa yang saya asumsikan adalah 'partyName'   -  person Chrismas007    schedule 05.01.2015
comment
@ Chrismas007 partyName menyimpan string (yaitu Pemilik, Kontraktor, dll.). Saya pikir arraynya akan berfungsi. Saya juga akan mencari tahu apa itu 'Pilih Kasus'. Terima kasih semua!   -  person arlederman    schedule 05.01.2015


Jawaban (1)


JIKA Anda perlu mengubah NAMA menjadi ANGKA menggunakan 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

Jika Anda perlu mengubah NUMBER menjadi NAMA menggunakan 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
Ini bermanfaat, terima kasih! Ini mirip dengan apa yang saya lakukan, dan saya akan dapat menggunakan kasus pertama nanti di skrip. - person arlederman; 05.01.2015