2011-02-02 7 views
4

Excelでボタンを設定して、同時に2つのワークシートのデュアルビューを表示しようとしています。これは私がこれまでに書いたコードです(下記参照)。これまでのところ、コードは機能するようです。問題は、上部のウィンドウにワークシート上のいくつかのActiveXコントロールがあり、下部のウィンドウが再び閉じられるまで機能しなくなるようです。なぜこれが起こっているのですか?それを修正するために何ができますか?ありがとう。Excel:同じブックで2つのウィンドウを開くと、最初のウィンドウでマクロが機能しなくなるのはなぜですか?

Private Sub DualViewButton_Click() 
    Dim windowToPutOnTimeline As Window 

    If Windows.Count = 1 Then 
    ThisWorkbook.NewWindow 
    Windows.Arrange xlArrangeStyleHorizontal, True, False, False 
    Set windowToPutOnTimeline = Windows(1) 
    If Windows(1).Top < Windows(2).Top Then 
     Set windowToPutOnTimeline = Windows(2) 
    End If 

    With windowToPutOnTimeline 
     .Activate 
     HorizontalTimelineSheet.Activate 
     .DisplayGridlines = False 
     .DisplayRuler = False 
     .DisplayHeadings = False 
     .DisplayWorkbookTabs = False 
     '.EnableResize = False 
    End With 

    Windows(2).Activate 'go back to the right focus the user expects. 

    Else 
    If Windows(1).Top = Windows(2).Top Then 
     Windows.Arrange xlArrangeStyleHorizontal, True, False, False 
    Else 
     Windows.Arrange xlArrangeStyleVertical, True, False, False 
    End If 
    End If 
End Sub 

EDIT:windowToPutOnTimelineに割り当てられているウィンドウを切り替えると、問題はなくなります。だから、私は本質的に、それが他の方法で動作する理由を知らずに問題を回避しました。 (下記のコードをご覧ください)

With ThisWorkbook 
    Set windowToPutOnTimeline = .Windows(1) 
    Set windowToPutOnDataSheet = .Windows(2) 
    tmp = .Windows(1).Top 
    .Windows(1).Top = .Windows(2).Top 
    .Windows(2).Top = tmp 
End With 
+0

あなたが説明しているのと同じ問題に遭遇していますが、あなたの回避策をあまり理解していません。私はある種の運命から私を救うために少し明確にできるかどうか非常に感謝しています! – Sam

+0

@Sam、それは私がそのコードを作業して以来、長い時間と別の仕事だった...しかし、私は同じブックの2つの異なるシートを表示するために2つのウィンドウを作成していた思い出す限り、新しいワークシートを示しました。まだバグがあったかもしれないと思いますが、私の場合は容認できました。 –

+0

フォローアップありがとう - 私はそれを感謝します! – Sam

答えて

4

この動作はActiveXコントロールのバグです。回避策として

、フォームのボタンを使用して、フォームコントロールからボタンではなく、ActiveXのボタン

を使用しますが、モジュールを追加するには、コードとサブを宣言してサブを割り当てる必要があります私はExcel 2007の上でこれを試してみました

(ActiveXのボタンのクリックイベントにコードを置くことに並置される)あなたのボタンにアクションマクロは、[OK]を動作するようです - ボタンが表示され、両方のウィンドウ上で動作

私は「
+0

mousemoveイベントが必要な場合を除き、この場合はうまくいきません。 –

関連する問題