Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


502 / 13645 ツリー ←次へ | 前へ→

【80028】ユーザーフォームのコマンドボタン ACE 18/7/2(月) 15:22 質問[未読]
【80029】Re:ユーザーフォームのコマンドボタン よろずや 18/7/2(月) 17:48 回答[未読]
【80030】Re:ユーザーフォームのコマンドボタン ACE 18/7/3(火) 10:11 質問[未読]
【80031】Re:ユーザーフォームのコマンドボタン よろずや 18/7/3(火) 10:59 回答[未読]
【80032】Re:ユーザーフォームのコマンドボタン ACE 18/7/3(火) 11:24 お礼[未読]

【80028】ユーザーフォームのコマンドボタン
質問  ACE  - 18/7/2(月) 15:22 -

引用なし
パスワード
   シート上にオートシェイプ1から3を配置しています。
ユーザーフォームにコマンドボタンでOKとキャンセルを配置しています。

オートシェイプ1をクリックするとユーザーフォームを呼出
ユーザーフォーム上のOKを押すと処理1
キャンセルを押すとユーザーフォームを閉じる。

オートシェイプ2をクリックすると同じユーザーフォームを呼出
ユーザーフォーム上のOKを押すと処理2
キャンセルを押すとユーザーフォームを閉じる。

オートシェイプ3をクリックすると同じユーザーフォームを呼出
ユーザーフォーム上のOKを押すと処理3
キャンセルを押すとユーザーフォームを閉じる。

OKの処理をクリックしたオートシェイプによって
処理を変えるにはどうすれば良いのでしょうか?

【80029】Re:ユーザーフォームのコマンドボタン
回答  よろずや  - 18/7/2(月) 17:48 -

引用なし
パスワード
   標準モジュールに
Option Explicit
Sub 角丸四角形_Click()
  Load UserForm1
  UserForm1.呼び出し元 = Application.Caller
  UserForm1.Show vbModal
  Unload UserForm1
  Set UserForm1 = Nothing
End Sub

ユーザーフォームに
Option Explicit
Public 呼び出し元 As String
Private Sub CancelButton_Click()
  Me.Hide
End Sub
Private Sub OKButton_Click()
  MsgBox 呼び出し元
End Sub

なんてね。

【80030】Re:ユーザーフォームのコマンドボタン
質問  ACE  - 18/7/3(火) 10:11 -

引用なし
パスワード
   ▼よろずやさん

返信ありがとうございます。
呼び出し元のところは、何を入力すれば良いのでしょうか?

【80031】Re:ユーザーフォームのコマンドボタン
回答  よろずや  - 18/7/3(火) 10:59 -

引用なし
パスワード
   >呼び出し元のところは、何を入力すれば良いのでしょうか?

複数のボタンでこのマクロを呼び出すと、
UserForm1.呼び出し元 = Application.Caller
でボタンの名前が入ります。

ユーザーフォームのOKボタンで
MsgBox 呼び出し元
でボタンの名前が表示されます。
で、処理1、処理2、処理3は、ボタンの名前に応じて切り替えられるということです。
MsgBox の代わりに

Select Case 呼び出し元
  Case ボタン1
    処理1
  Case ボタン2
    処理2
というように...

【80032】Re:ユーザーフォームのコマンドボタン
お礼  ACE  - 18/7/3(火) 11:24 -

引用なし
パスワード
   ▼よろずやさん

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

希望通りのものが出来ました。
丁寧な説明ありがとうございました。

また、宜しくお願い致します。

502 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free