2016-06-02 2 views
1

안녕하세요 저는 VBA 프로그래밍을 처음 사용합니다. txtDept1, txtDept2 및 txtDept3이라는 레이블이 붙은 텍스트 상자가 있습니다. 내가 정수 (K)에조건부로 변수 이름 수정

Private Sub test() 
Dim txtDept1, txtDept2, txtDept3, Testval As String 
Dim k As Integer 
txtDept1 = "Chem" 
txtDept2 = "Biol" 
txtDept3 = "Phys" 
k = 1 
Testval = Evaluate("txtDept" & CStr(k)) 
MsgBox (Testval) 
End Sub 
+1

정확하게 알고 싶은 것이 명확하지 않습니다. [질문] –

+0

실제 목표에 대한 자세한 정보를 추가 할 수 있습니다. 텍스트 상자는 사용자 정의 폼 또는 시트에 속합니까? 후자의 경우에는 "ActiveX"또는 "Form"컨트롤입니까? "txtDept1", ecc .. 실제 컨트롤 이름 ("Name"속성에서 볼 수있는 컨트롤 이름) 또는 각각의 아래에 레이블이 있습니까? – user3598756

+0

VBA에서는'TxtDept1-3'에서했던 것처럼 여러 변수를 선언하지 않으며 코드에서 변형으로 선언됩니다. –

답변

1

을 조건 선택하려는 대신 배열 사용을 고려할 수 있습니다

Option Base 1 

Private Sub test() 

Dim txtDept As Variant, Testval As String 
Dim k As Integer 

txtDept = Array("Chem", "Biol", "Phys") 

k = 1   'the first from the above array elements 

Testval = txtDept(k) 

MsgBox (Testval) 

End Sub 

중요 :로 위의 Option Base 1을 포함하는 것을 잊지 마십시오 코드를 복사 할 때 이는 VBA가 일반적으로 0부터 시작하는 배열의 요소를 계산하기 때문입니다. 따라서 0은 (귀하의 경우) ChemBiol이 1이 될 것입니다. Option Base 1을 사용하면 VBA에 1로 계산을 시작하라는 메시지가 표시됩니다 올바른 결과를 얻을 수 있습니다.

+0

배열은 거의 모든 단일 언어로 제로 기반입니다. 'Option Base 1'은 실제로 적절한 학습 IMO를 방해하는 "초보자를 돕는"기능 중 하나입니다. 하지만 꽤 명확하지 않은 질문에 답하는 것이 +1입니다. –