2016-10-04 57 views
0

下面的代碼將根據哪些單元格包含「是」來增加一個變量。它直到我使用自動填充將F13:F59中的任何單元格的值設置爲「是」時才起作用。當我手動輸入單詞「是」時,運行時錯誤不會發生。然而自動填充,似乎是造成這個問題。是什麼導致此運行時錯誤13「類型不匹配」?

Select Case (changedcell) 
'Issues Mgmt 
Case Range("F15"), Range("F19"), Range("F23"), Range("F27"), Range("F30"), Range("F39"), Range("F42"), Range("F45"), Range("F50"), Range("F53"), Range("F54") 'Issues 
     If Range("F15").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F19").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F23").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F27").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F30").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F39").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F42").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F45").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F50").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F53").Value = "Yes" Then 
     issues = issues + 1 
     End If 
     If Range("F54").Value = "Yes" Then 
     issues = issues + 1 
     End If 

     If issues > 1 Then 
    Application.EnableEvents = False 
     MsgBox "Issues Management has already been selected under another old solution category.", vbCritical, "Duplicate Use Case Selected" 
     Range(target.Address).Value = "" 
    End If 
End Select 

代碼的第一部分是發生錯誤的地方。有什麼想法嗎?

Case Range("F15"), Range("F19"), Range("F23"), Range("F27"), Range("F30"), Range("F39"), Range("F42"), Range("F45"), Range("F50"), Range("F53"), Range("F54") 'Issues 
+0

是一個'Worksheet_Change'過程的一部分? – EEM

+2

嗯...我不使用'Select Case'非常多,但是我從來沒有見過它像這樣構造過..什麼是'(changedcell)'?你的'Case'在哪裏?是不是寫'選擇案例',這樣你就不必做一大堆'If Then Else'陳述?_ – Tyeler

+0

[Select Case'的一個例子](http://www.excel -easy.com/vba/examples/select-case.html),微軟必須說[關於'Select Case'](https://msdn.microsoft.com/en-us/library/cy37t14y.aspx) – Tyeler

回答

1

試試這個:

Dim rIssues As Range 
Dim rCll As Range 
    Set rIssues = Range("F15,F19,F23,F27,F30,F39,F42,F45,F50,F53,F54") 
    For Each rCll In rIssues 
     If rCll.Value = "Yes" Then Issues = 1 + Issues 
    Next 

    If Issues > 1 Then 
     Application.EnableEvents = False 
     MsgBox "Issues Management has already been selected under another old solution category.", _ 
      vbCritical, "Duplicate Use Case Selected" 
     Range(Target.Address).Value = "" 
    End If 

推薦閱讀以下網頁:

For Each...Next Statement

Select Case Statement

+0

我會測試目標是否與rIssues範圍相交,只是爲了避免任何單元格更改時出現循環。也就是說,我假設OP在WorkSheet_Change事件中有這個。同時確保EnableEvents返回到True。 –

+0

@ScottCraner我假設這是一個Worksheet_Change事件的一部分,也假設交集和所有其他相關部分都在那裏,並且工作正常,因爲問題確認它只在使用自動填充的情況下才會失敗select,所以似乎所有其他部分(我們只是不知道它是如何)被很好地覆蓋。感謝您的輸入... – EEM

+0

EEM解決了我的問題!另外,感謝Scott的建議。 EnableEvents在子結尾處返回true。 – Heath

相關問題