次の方法で共有

Excel2013-VBAでExcelが終了しなくなる

Anonymous
2015-05-24T06:26:48+00:00

こんにちは

Excel2010-VBAで作成したコードを使用してExcel2010で動作させると正常に動作します。

しかし、同じコードをExcel2013で使用するとExcel2013が×ボタンから閉じられなくなります。

何が原因でしょうか。

アドバイスして頂けると幸いです。

閉じられなくタイミングは印刷した後です。

印刷は正常にできます。

よろしくお願いします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2015-05-28T05:59:04+00:00

    ​mitu_321 さん、こんにちは。

    ご返信、ありがとうございます。

    書き込んでいただいた VBA コードを確認してみましたが、要因の特定ができず、発生原因がわかりませんでした。

    Office の動作の問題も考えられるのですが、 VBA のコーディングに変更すべき点がないか確認しておくとよいかもしれません。

    このフォーラムでは Office の起動トラブルや、使用方法など、一般的な質問について情報交換が行われており、 VBA の詳細な内容については、情報が集まりにくい可能性があります。

    VBA の内容の質問については、 開発者の方々が情報交換を行っている MSDN の VBA フォーラムがありますので、こちらで情報を集めてみてはいかがでしょうか。

    Msdn フォーラム - Visual Basic for Application(VBA)

    ※ 投稿する場合は、 VBA コード全文を書き込んで質問すると、コメントが集まりやすいと思います。

    せっかく詳しい状況を書き込んでいただいたのに、他フォーラムの案内になってしまい、ごめんなさい。

    もし、 Office の動作に問題があるということがわかった場合は、こちらのフォーラムに遠慮なく書き込みをしてくださいね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2015-05-26T00:32:38+00:00

    ありがとうございます

    ・ 特定のマクロ有効ブック (*.xlsm) だけで起こる現象か

    >すべてのブックで起こります。

    ・ VBA を実行せずに印刷した場合はどうか

    >普通通り印刷できます

    ・ Excel ブックを閉じようとした時にエラーメッセージは出るか (発生する場合は全文を書き込んでください) 

    >エラーメッセージは出ません

    ×ボタンだけ使用不可になっています。

    ×ボタンはグレー表示にはなっていません。

    最小化、元に戻すボタンは正常に動きます。

    保存している別のブックを開いて閉じると、問題のブックも閉じられます。

    昨日色々やってみた結果、

    印刷字が原因ではなく、シートにプロテクトをかけているのが原因かもしれません。

    プロテクト、アンプロテクトの記述場所をいろいろ変えてやってみましたが上手くいきません。

    シートの保護は「ロックされたセル範囲の選択」のチェックを外しています。

    シートの保護を掛けているシートは

    入力用シートとメイン画面のシートです。

    少し長いですが、コードを掲載します。

    よろしくお願いします。

    Private Sub CommandButton1_Click()

    '-------------------------------------------

    '印刷

    '-------------------------------------------

    Dim WsN As Worksheet '入力用

    Dim WsM As Worksheet 'メイン画面用

    Dim WsI_1 As Worksheet '印刷用

    Dim WsI_2 As Worksheet '印刷用

    Dim WsI_3 As Worksheet '印刷用

    Dim myNo As Long '最終No'印刷用

    Dim myPrint As Long '印刷枚数'印刷用

    Dim f As Long

    Dim ff As Long '印刷用

    Dim c As Long '印刷用

    Dim pc As Long '印刷枚数番号'印刷用

    Dim LrowN As Long

    Const Hani As Long = 30 '印刷用

    Set WsN = Worksheets("入力")

    Set WsM = Worksheets("メイン")

    Set WsI_1 = Worksheets("印刷-1")

    Set WsI_2 = Worksheets("印刷-2")

    Set WsI_3 = Worksheets("印刷-3")

    myNo = WsN.Cells(Rows.Count, 2).End(xlUp).Row - 13

    WsN.Unprotect

    WsM.Unprotect

    Application.ScreenUpdating = False

    For ff = 1 To 2

        c = 0 '印刷番号

        pc = 2 '2部印刷

        Select Case myNo

            Case Is <= 25

                With WsI_1

                    .Range("B16:H40").Value = WsN.Range("C14:I38").Value

                    .Range("G41:G43").Value = WsN.Range("H9:H11").Value

                    .Range("D12").Value = .Range("G43").Value

                    DoEvents

                    .Visible = True

                    .PrintOut

                    .Visible = xlSheetVeryHidden

                    .DisplayPageBreaks = False

                    DoEvents

                End With

            Case Is >= 26

                With WsI_2

                    .Range("B16:H40").Value = WsN.Range("C14:I38").Value

                    .Range("D12").Value = .Range("G43").Value

                    myPrint = NumberPrint(myNo)

                    .Range("H43").Value = 1 '印刷番号

                    DoEvents

                    .Visible = True

                    .PrintOut

                    .Visible = xlSheetVeryHidden

                    .DisplayPageBreaks = False

                    DoEvents

                End With

                With WsI_3

                    For f = 1 To myPrint

                        WsN.Range(WsN.Cells(39 + c, 3), WsN.Cells(68 + c, 9)).Copy

                        .Range("B5").PasteSpecial xlPasteValues

                        .Range("H39").Value = pc

                        If f = myPrint Then

                            '罫線

                            .Range("E35:G35, E36:G36, E37:G37").Borders(xlEdgeBottom).LineStyle = xlContinuous

                            '見出し

                            .Range("E35").Value = "合 計 金 額"

                            .Range("E36").Value = "調 整 金 額"

                            .Range("E37").Value = "請 求 金 額"

                            '金額

                            .Range("G35:G37").Value = WsN.Range("H9:H11").Value

                        End If

                        DoEvents

                        .Visible = True

                        .PrintOut

                        .Visible = xlSheetVeryHidden

                        .DisplayPageBreaks = False

                        DoEvents

                        c = c + Hani

                        pc = pc + 1

                    Next

                End With

        End Select

        '-------------------------------------

        '罫線等クリア

        With WsI_3

            .Range("H39,H35:G37").ClearContents

            .Range("E35:G35").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone

            .Range("E36:G36").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone

            .Range("E37:G37").Borders(xlEdgeBottom).LineStyle = xlLineStyleNone

        End With

    Next

    'シートクリア

    With WsI_1

        .Range("B16:H40,G41:G43,H43,H2:H3,C5:D5,D12:E13,F13").ClearContents

    End With

    With WsI_2

        .Range("B16:H40,G41:G43:H2:H3,C5:D5,D12:E13,F13,H43").ClearContents

    End With

    With WsI_3

        .Range("B5:H34,H39").ClearContents

    End With

    With WsN

        .Range("C5:I5,D9:D11,H9:H10").ClearContents

        LrowN = .Cells(Rows.Count, 2).End(xlUp).Row

        .Range("B14:I" & CStr(LrowN)).ClearContents

    End With

    With WsM

        .Range("D5:D8").ClearContents

        .Visible = True

        .Activate

        .Range("D5").Select

    End With

    WsM.Protect

    WsN.Protect

    WsN.Visible = xlSheetVeryHidden

    Application.ScreenUpdating = True

    Set WsN = Nothing

    Set WsM = Nothing

    Set WsI_1 = Nothing

    Set WsI_2 = Nothing

    Set WsI_3 = Nothing

    Unload Me

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2015-05-25T03:39:16+00:00

    ​mitu_321 さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    Excel 2013 で VBA を実行させると Excel が終了しなくなるのですね。

    まだはっきりとした要因は解らないですが、 Excel 2013 では VBA のコードに変更などが必要、ということなのかもしれません。

    VBA コードの全容が解ると確認された皆さんからも情報が集まりやすくなると思うので、 VBA コード全文を書いてみてはいかがでしょうか。

    また、状況がより詳しくわかるように、追加で次のことも書き込んでみるとよいです。

    ・ 特定のマクロ有効ブック (*.xlsm) だけで起こる現象か

    ・ VBA を実行せずに印刷した場合はどうか

    ・ Excel ブックを閉じようとした時にエラーメッセージは出るか (発生する場合は全文を書き込んでください)

    追加の返信お待ちしています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません