多くのプロセスを自動化する一連のマクロがあります。私はこれをExcelアドインを介して私の同僚に配布したいと思います。私はちょうど正しいとは思わない1つのコードを持っています。ここでExcel VBA:ユーザーに.xlsmとして保存させる
は(正常に動作します)「マスター」のコードです:
Option Explicit
Sub MIUL_Run_All()
Dim StartTime As Double
Dim SecondsElapsed As String
'Remember time when macro starts
StartTime = Timer
Call OptimizeCode_Begin
Call Save_As
Call Format_MIUL
Call Custom_Sort_MIUL
Call Insert_Process_List
Call Format_Process_List
Call OptimizeCode_End
'Determine how many seconds code took to run
SecondsElapsed = Format((Timer - StartTime)/86400, "ss")
'Notify user in seconds
MsgBox "This code ran successfully in " & SecondsElapsed & " seconds",
vbInformation
End Sub
私に迷惑を与えているコードは「Save_As」です。ユーザーが最初にやりたいことは、ファイルをマクロ対応ファイルとして保存することです。理想的には、私は、コードがユーザーのためにこれらの事をしたい:
- フォース彼らはすでににファイル名を持っているので、.xlsm
- として保存するユーザーがダイアログボックスとして保存して、現在のファイル名を指定してくださいと連携。
- CANCELボタンを押すと、マクロ全体が停止する必要があります。
これはかなり些細なことだと思っていましたが、これまでのところ私のコードの中で最も難しい部分でした。
このコードは非常にシンプルですが、それはキャンセルボタンに対応していません。ここで
は、私がSave_Asコードを試してみましたものです。
Dim userResponse As Boolean
On Error Resume Next
userResponse = Application.Dialogs(xlDialogSaveAs).Show(52)
On Error GoTo 0
If userResponse = False Then
Exit Sub
Else
End If
これもやはりキャンセルボタンには対応していません。
私はおそらく上記のコードに似ている半ダースのものを試しました。
何か助けていただければ幸いです。
userResponse = Application.Dialogs(xlDialogSaveAs).SHOW(52)とたダイアログボックスが表示されます52.xlsxをファイル名として使用します。ダイアログボックスの最初の引数はファイル名です。 52を2番目の引数として使用すると、XLSMファイルタイプが強制的に実行されます。私はあなたのコードを実行し、それは完全に働いた。エラーラインが必要かどうかはわかりません。 – mooseman
@mooseman問題は、次のコードがその特定のSubを終了し、 "Call Format_MIUL"という次のコードに移動するときに実行を開始することです。どうすればコード全体から壊れるのですか? – CC268
あなたはこのサブを別のものから呼び、キャンセルが選択されたときにすべてのコードを停止したいとお考えですか?それは全体的なデザインになります。グローバル変数を設定し、userResponse = Falseの場合に設定します。 – mooseman