簡體   English   中英

Excel VBA中的不匹配錯誤

[英]Mismatch Error in Excel VBA

我是Excel Vba的新手,我想知道是否有人可以幫助我弄清楚如何有效地編寫此代碼。

我試圖使用Else-if語句比較值,但是在運行宏時始終收到不匹配錯誤。 這是我到目前為止的內容:

Dim score1 As Variant, result1 As Variant

 score1 = Range("B24").value
 Sheets("Answers").Range("P1") = VarType(score1)

If VarType(score1) = 0 Then
        result1 = "Error"
        msg1 = " INPUT A VALUE"
    ElseIf score1 > (((Range("I24").value - Range("H24").value) * 0.2) + ((Range("H24").value + Range("I24").value) / 2)) Then
        result1 = score1
        msg1 = " Adjust the Left Flank of fH_Beta"
    ElseIf score1 < (((Range("I24").value - Range("H24").value) * 0.2) - ((Range("H24").value + Range("I24").value) / 2)) Then
        result1 = score1
        msg1 = " Adjust the Left Flank of fH_Beta"
    Else
        result1 = "N/A"
        msg1 = " No action required"
End If

 Sheets("Answers").Range("F11").value = result1

當我將兩條Elseif行從> 2.3和<-7.7更改為代碼中顯示的公式時,開始出現錯誤。 我需要編寫這些公式,因為值(2.3&-7.7)可能會根據應用程序而變化。

順便說一句,如果單元格為空,則第一行(IF行)應該保存一條錯誤消息。 我相信錯誤與我將變量定義為“ Double”類型有關,但是我找不到解決它的方法(我也嘗試將varialbes保存為String並將每個.value更改為.Text)。

任何幫助,將不勝感激。 謝謝...

****更新:上面的代碼現在是我當前的代碼。 該代碼中的公式應采用I24和H24中的值(-7.7和2.3),並給出-0.7的較高公差(在其中帶有+的行)和-4.7的較低公差(在其中帶有-的行) ),並使用這些公差評估用戶的輸入(B24)。

如果該單元格保留為空白,則代碼將運行First IF行並返回msg1值“ INPUT A VALUE”。 如果用戶輸入的數字超出容忍范圍,則代碼應給出msg1值“調整fH_Beta的左翼”。 如果這兩個條件都不滿足,則輸入應在公差范圍內,並且msg1值應為“無需采取任何措施”。

我的問題是,無論我給B24加上什么值(甚至是公差值),我都會得到msg1值“調整fH_Beta的左翼”,但我不知道為什么。 如果需要進一步清理,請告訴我。

謝謝

由於scoredouble (即數字),因此將它與空白字符串進行比較是沒有意義的。

If score1 = ""沒有意義。 它會給你一個類型不匹配的錯誤。

另一種方法是使用一個variant作為score 除其他類型外,變體可以字符串或數字形式存在。 然后,您可以使用Vartype函數來檢查變量中的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM