2016-10-04 14 views
0

以下のコードは、どのセルに「はい」が含まれているかに基づいて変数をインクリメントします。これは、オートフィルを使用してF13:F59のいずれかのセルの値を「はい」に設定するまで機能します。 "Yes"という単語を手動で入力すると、ランタイムエラーは発生しません。オートフィルは、問題を引き起こしているようです。このランタイムエラーの原因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)とは何ですか?あなたの 'ケース'はどこですか?あなたが 'If Then Else'ステートメントを作ってはいけないように' Select Case'を書いているのではないのですか?_ – 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イベントの一部であると仮定しています。また、交点と他のすべての関連部分がそこに存在し、正常に動作していると仮定しています。部品(私たちはそれがどういうものか分かりません)が十分にカバーされています。入力のおかげで... – EEM

+0

EEMは私の問題を解決!また、スコットのアドバイスに感謝します。 EnableEventsは、サブの最後でtrueに戻ります。 – Heath

関連する問題