2017-11-03 5 views
0

深い選択のケースが条件に一致しない場合、コードを再入力しないようにする方法があるのだろうかと思いました。Excel用のVBA - より深い選択のケースが基準に一致しない場合は、もう一度タイプコードを避ける

月が基準以下であるかどうかを確認する必要があります。その日がいずれのケースとも一致しない場合は、ELSEの場合は上記のSelect文で設定したコードを実行する必要があります。

回避策を知る唯一の方法は、ネストされた選択の代わりにIF文を使用し、GO TO LABELを使用してCASE ELSE文に戻しますが、それは非常に不格好です。

深い選択のケースが基準に一致しない場合は、別のケースで同じコードを再入力しない方法がありますか?この@MarcinSzaleniec

Select Case Month(Range("b" & Start)) 
         Case 1 

         Case 4 

         Case 5 

         Case 6 

         Case 8 
         GiornoMese = listaattiva(j).Text & "/" & Month(Range("b" & Start)) & "/" & Year(Range("b" & Start)) 
         Select Case Day(GiornoMese) 
           Case 15 
            **HERE IF THE DAY IS NOT THE 15th 
            CODE SHOULD JUMP OUT AND RUN CODE TYPED 
            IN THE CASE ELSE STATEMENT** 
         Case 12 

         Case Else 
          'Debug.Print listaattiva(j).Text & "/" & 
          'Month (Range("b" & Start)) & "/" & Year(Range("b" & Start)) 
          GiornoMese = listaattiva(j).Text & "/" & Month(Range("b" & Start)) & "/" & Year(Range("b" & Start)) 
          If Weekday(GiornoMese, vbMonday) = 7 Then 
           'Domenica - Tutte le ore del giorno sono F3 
           For Each quarto In listaattiva(j).Attributes 
            'Debug.Print listaattiva(j).Attributes.Length 
            'Debug.Print quarto.Text 
            F3 = F3 + quarto.Text 
            'Debug.Print F3 
           Next 

は私は私はすでにCASE ELSE文の中で述べられたコード(またはCTRL-Vペースト)を再入力するだろう。

XMLファイルに記載されているデータが公休日にあるかどうかを確認する必要があります。 これを行うには、最初に月とその日をチェックします。

実際の祝祭日でない場合は、ELSE STATEMENTの標準コードを使用します。月と祝日の場合は別のコードを書いていますが、月が祝日でない場合は、 ELSE STATEMENTのコードが記載されています。

私はもっと「美しさ」問題ですが、私は同じワークフローを持つ同じSUBにコードを保存して、他のサブプロジェクトにpplをジャンプさせる必要はありません。

答えて

1

Case Elseセクションのコードと別のサブセクションを作成します。必要な変数を引数として渡すことができます。

Sub DoIfElse (_Year as Integer, _Month as Integer) 

(...) 
end Sub 

あなたのコードの断片のみを公開しているため、本当に必要とされている変数を解読するんは難しいですが、私はあなたが何が必要なのですか知っていると思う:のようなものを試してみてください。 DoIfElseは、メインサブルーチンのさまざまな場所で使用できます。

関連する問題