2011-10-03 4 views
3

excel 매크로에서 string을 long으로 변환하려면 어떻게해야합니까? CLNG에서 유형 불일치 오류가 발생했습니다.excel 매크로에서 문자열을 long in로 변환

Dim wStr As String 
Dim w As Long 

wStr = "=RAND() * 0.3 + 0.35" 
w = CLng(wStr) 
+0

불일치는 "= RAND() * 0.3 + 0.35"가 long으로 해석 될 수 없다는 사실 때문입니다. CLng는 이미 숫자 인 문자열 (예 : "0.35")에서 작동합니다. RonnieDickinson이 제안한 것처럼 숫자에 "= RAND() ..."라는 식을 먼저 평가해야합니다. – Mathias

답변

4

하여 오류의 근본 원인이 CDbl가 기대하는 것입니다 숫자 값 또는 보이는 문자열은과 같습니다. 문자열 "=RAND() * 0.3 + 0.35" 자체는 숫자와 같지 않습니다. 은 숫자로입니다.

여기서 실제로 달성하려는 것은 무엇입니까?

그 경우의 식으로부터, 긴 정수 결과를 얻을 = RAND() * 0.3 + 0.35

Dim w as Long 
w = Rnd() * 0.3 + 0.35 

경우 사용할 해당 셀 화학식 사용 께 관해서

Dim w as Long 
w = Application.Evaluate("=RAND() * 0.3 + 0.35") 

을 에뮬레이션 수식 자체, 왜이 구조? 범위 [0.35, 0.65]에서 Single을 반환하고 Long으로 반올림하면 각각 50 % 확률로 0 또는 1을 반환합니다.

w = Rnd() 

또는

w = Application.Evaluate("=RAND()") 

또는

w = Application.WorksheetFunction.RandBetween(0, 1) 

또는이 내가 놓친 적이 몇 가지 다른 이유를 사용할 수 있습니까?

4

아래의 공식을 사용해보십시오.

w = CLng(Evaluate(wStr)) 

또는 "Excel 수식을"사용하려고 시도하는 것을 잊지, 그 랜덤 기능 대응과 함께 VBA로 바로 이동이

w = CLng(Rnd() * 0.3 + 0.35) 
관련 문제