如何在Excel宏中將字符串轉換爲long。 CLng給我的類型不匹配錯誤在excel宏中將字符串轉換爲long
Dim wStr As String
Dim w As Long
wStr = "=RAND() * 0.3 + 0.35"
w = CLng(wStr)
如何在Excel宏中將字符串轉換爲long。 CLng給我的類型不匹配錯誤在excel宏中將字符串轉換爲long
Dim wStr As String
Dim w As Long
wStr = "=RAND() * 0.3 + 0.35"
w = CLng(wStr)
你的錯誤的根本原因是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]範圍內返回單一值,當四捨五入到一個長度時,將返回0或1,每個概率爲50%。
爲什麼不使用
w = Rnd()
或
w = Application.Evaluate("=RAND()")
或
w = Application.WorksheetFunction.RandBetween(0, 1)
或有我錯過了一些其他的原因?
請嘗試下面的w公式。
w = CLng(Evaluate(wStr))
還是算了嘗試使用「Excel公式」,而直接進入VBA與它的隨機函數對應
w = CLng(Rnd() * 0.3 + 0.35)
不匹配是由於「= RAND()* 0.3 + 0.35」不能被解釋爲長的事實。 CLng將處理已經是數字的字符串,如「0.35」。您需要首先評估表達式「= RAND()...」到一個數字,就像RonnieDickinson所建議的那樣。 – Mathias