を再配置コードは、いくつかの異なる場所で、「はThisWorkbook」オブジェクトおよび「ユーザーフォーム」のコードになります。
"ThisWorkbook"には、UserFormが唯一のExcelのもの(ブック)であるかどうかを判断するコードが含まれています。Excelのアプリケーションを非表示にし、ブック自体を非表示にします。他のワークブックが開いている場合は、そのワークブックは単に非表示になります。私は両方のケースでアプリケーションとブックを隠すように設定して、UserFormがUserFormに関連付けられているブックをプルアップせずに実行した後で新しいExcelインスタンスを開くことができるようにしました。このためのコードは、(「はThisWorkbook」オブジェクトになる)以下である:
Private Sub WorkBook_Open()
Dim wb As Workbook
Set wb = Workbooks("MyBook.xlsm")
If Workbooks.Count > 1 Then
wb.Windows(1).Visible = False
Else
wb.Windows(1).Visible = False
Application.Visible = False
End If
UserForm1.Show vbModeless
'Put defaults and populations here
End Sub
ユーザーフォームがアクティブである間のExcelを使用するためUserForm1.Show vbModeless
が許します。 このセクションでノートのカップル:
- 「UserForm1では、」私のユーザーフォームの名前は、あなたの名前に変更され、私は ワークブックの名前に引用符の内側に変更
Set wb = Workbooks("")
- あなたは開口部の他のアクションを必要としない場合は、他のワークブックが
開けないでユーザーフォームは、
にIfElse
声明をなくすことができ、If
に移動させ、コードの次のセクションはUserForm Codeに入ります。 Excelブックを表示するように設定されたボタンがあります。ボタンを表示したくない場合は、クリックした地域を持つことができます。 Excelシートを有効にするには、アプリケーションをアクティブ化する必要があります。アクティブなもの(UserForm)をアンロード(非アクティブ化)します。ユーザーは、スプレッドシートへのアクセスを必要としない場合は、コードのこのビットは必要ありません。 Private Sub See_Excel_Click()
Dim wb As Workbook
Set wb = Workbooks("MyBook.xlsm")
wb.Windows(1).Visible = True
Application.Visible = True
wb.Sheets("Sheet1").Activate
Unload Me
End Sub
ユーザーフォーム内でユーザーフォームを閉じたときに何が起こるかを処理する方法があるはず、Excelアプリケーションとして、およびブックは、バックグラウンドで隠されたままになります。私はワークブックとアプリケーションを閉じるアクションを持っています。あなたがCancel = True
を設定した場合、赤色のxボタンはユーザーフォームを閉じることはありません。私が使用するコードは、次のとおりです。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = False
Dim wb As Workbook
Set wb = Workbooks("MyBook.xlsm")
wb.Windows(1).Visible = True
Application.Visible = True
ThisWorkbook.Saved = True
ThisWorkbook.Activate
If Workbooks.Count > 1 Then
ActiveWorkbook.Close
Else
Application.Quit
End If
End If
End Sub
これは、ユーザーフォームの中に入るコードです。そして、VBAでUserFormを持つために必要なコードは、ExcelがUserFormと同時に正常に動作するようにしながら、独自のアプリケーションとして動作します。
は何が起こるかを要約する:ワークブックブックを立ち上げている
- が隠されている、および他のブックが開いていない場合はExcelアプリケーションが非表示になります。
- スプレッドシートが活性化されると、ユーザーフォームがExcelが同時に
- 使用することを可能にするために開始され、再びユーザーフォームが閉じているときに有効に再とアプリケーションと非隠すワークシート
- であるExcelワークブックが閉じられ、他のワークブックがない場合は、Excelアプリケーションが閉じられます。
- デフォルトを設定するか、コンボボックスを移入すると、それらを「WorkBook」オブジェクトコードに入れます。
私はスタンドアロンの質問として書き直してから自分の質問に答えを投稿することをおすすめします([はい、これは許可されています](https://stackoverflow.com/help/self-answer)。 )) –
[so]はQ&Aで、なんらかのディスカッションフォーラムではありません。質問フィールドは質問をホストし、回答フィールドは回答を保持し、タイトルには '[SOLVED]'や '[SOLUTION]'や他の厄介なタグはありません。投稿を編集してQ&Aのように見えるようにしてください。それが立てば、あなたが何を求めているかは完全には不明です。 –
他のワークブックで定義済みの機能を実行するために、非表示のワークブックのuserformをコントロールウィンドウとして使用していますか?良いアイデア。 –