2017-12-12 8 views
-2

セル値の変更に基づいてさまざまなマクロをトリガするvbaスクリプトを作成しようとしています。単一のセルの値を変更すると、 'C22'セルの下のコードが正常に機能しましたが、追加のセルを追加するとエラーになります。マクロ「セルワークチェンジ」を使用してセル値が変更されたときにトリガする

どのような考えですか?


Private Sub Worksheet_Change(ByVal Target As Range) 


If Target.Address = "$C$22" Then 
    Select Case Target.Value 
     Case "Yes" 
      Call Hide280C 
     Case "No" 
      Call Show280C 
     Case "Not Sure" 
      Call Show280C 
     Case "" 
      Call Show280C 
     Case Else 
      Exit Sub 
    End Select 

If Target.Address = "$L$33" Then 
    Select Case Target.Value 
     Case "Yes" 
      Call NJCreditShow 
     Case "No" 
      Call NJCreditHide 
     Case Else 
      Exit Sub 
    End Select 

If Target.Address = "$L$34" Then 
    Select Case Target.Value 
     Case "Yes" 
      Call PACreditShow 
     Case "No" 
      Call PACreditHide 
     Case Else 
      Exit Sub 
    End Select 

End If 

End Sub 
+2

'それは私にERROR'を与えているあなたを助けるために私たちを助けることができる情報ではありません。 > [How to Ask](https://stackoverflow.com/help/how-to-ask) –

+5

'If'ごとに' End If'が必要です。そうでない場合は 'ElseIf'文を使うのが良いでしょう。 'If​​ ... ElseIf ... End If'の[VBA Documentation](https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/ifthenelse-statement)を見てください。 –

+3

あなたは3つの 'If'と1つの' End If'しか持っていません - それは問題です –

答えて

0

あなたのコードはに更新します。

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = "$C$22" Then 
    Select Case Target.Value 
     Case "Yes" 
      'Call Hide280C (Call not needed) 
      Hide280c 
     Case "No" 
      Show280C 
     Case "Not Sure" 
      Show280C 
     Case "" 
      Show280C 
     Case Else 
      Exit Sub 
    End Select 
ElseIf Target.Address = "$L$33" Then 'You missed the End if, but you could also use ElseIf and only have one End if at the end. 
    Select Case Target.Value 
     Case "Yes" 
      NJCreditShow 
     Case "No" 
      NJCreditHide 
     Case Else 
      Exit Sub 
    End Select 
ElseIf Target.Address = "$L$34" Then 
    Select Case Target.Value 
     Case "Yes" 
      PACreditShow 
     Case "No" 
      PACreditHide 
     Case Else 
      Exit Sub 
    End Select 
End if 
End Sub 
+2

また、 'Select Case Target.Address'も実装できます。また、 'Call'を使うことは必要ありません。 –

+0

@XabierちょうどIMHOが答えを得るためには、良質の回答を投稿し、ちょうどコピー/貼り付け可能な解決策よりも少しだけ言葉を書くべきです。このサイトは、ソリューションが単にコードの代わりに「方法」と「理由」を提供する場合(単に何かを考えたり学習するのではなく、単にコピー/貼り付けを行うだけでよい)、理解と学習に役立ちます。ガイドラインのコードによれば、回答のみが品質の悪い回答であり、避けるべきです。 –

+0

@Peh私はこの質問に答えたいと思っていました。OPは、あなたと他の何人かの人が既に脱落について言及しているので、End Ifの部分に簡単な省略をしました。私の答えは単純化するべきだと思っていました。誰もが学ぶのを助けるために徹底的に精緻化してコメントすることを目指しています。 – Xabier

関連する問題