teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

syuusei

2018/01/18 01:24

投稿

jawa
jawa

スコア3020

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  Private Sub prcButtonClick(ByVal viBtnNo As Integer)
24
24
  If viBtnNo = 1 Then
25
- Call hogehoge1
25
+ Call hogehoge
26
26
  End If
27
27
 
28
28
  'hogehoge以外の処理

2

tuiki

2018/01/18 01:24

投稿

jawa
jawa

スコア3020

answer CHANGED
@@ -2,4 +2,32 @@
2
2
 
3
3
  ActiveXボタンの場合、例えば` CommandButton1`というボタン名ならクリックイベントは` CommandButton1_Click`というように、ボタン毎にクリックイベントが別れていると思います。
4
4
 
5
- 入り口(クリックイベント)が別れていますので、その時点で「CommandButton1が押された」という情報を覚えておけば、たとえその後共通関数が呼ばれたとしてもどの入口から入ってきたのか判別可能になると思いますが、どうでしょうか?
5
+ 入り口(クリックイベント)が別れていますので、その時点で「CommandButton1が押された」という情報を覚えておけば、たとえその後共通関数が呼ばれたとしてもどの入口から入ってきたのか判別可能になると思いますが、どうでしょうか?
6
+
7
+ 追記をうけて
8
+ ---
9
+ おそらくCommandButton1_Clickには`hogehoge`を呼び出す以外の処理もあり、CommandButton2をクリックした際にはそのhogehoge以外の処理を同じように実行したい、ということだと思います。
10
+ こういう場合、共通で使用する処理は直接CommandButton1_Clickに記述せず、別関数とした方が扱いやすくなります。
11
+
12
+ 下記のサンプルでは`CommandButton1_Click`の内容をそのまま`prcButtonClick`という別関数に載せ替え、hogehogeを実行するかどうかだけ呼び出し元によって切り分けるようにしています。
13
+ 各ボタンでは、自分がどのボタンなのかを`prcButtonClick`関数に渡すようにしています。
14
+ ```
15
+ Private Sub CommandButton1_Click()
16
+ Call prcButtonClick(1)
17
+ End Sub
18
+
19
+ Private Sub CommandButton2_Click()
20
+ Call prcButtonClick(2)
21
+ End Sub
22
+
23
+ Private Sub prcButtonClick(ByVal viBtnNo As Integer)
24
+ If viBtnNo = 1 Then
25
+ Call hogehoge1
26
+ End If
27
+
28
+ 'hogehoge以外の処理
29
+
30
+ End Sub
31
+ ```
32
+
33
+ 参考になれば幸いです。

1

修正

2018/01/18 01:21

投稿

jawa
jawa

スコア3020

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  この質問が出るのは「ActiveXコントロール」ではなく「フォームコントロール」のボタンをシート上に配置した場合の方が多いような気がしますが。
2
2
 
3
3
  ActiveXボタンの場合、例えば` CommandButton1`というボタン名ならクリックイベントは` CommandButton1_Click`というように、ボタン毎にクリックイベントが別れていると思います。
4
+
4
- 入り口(クリックイベント)が別れていますので、たとえその後共通関数が呼ばれたとしてもどの入口から入ってきたのかを覚えておくのは容易ではないでしょうか?
5
+ 入り口(クリックイベント)が別れていますので、その時点で「CommandButton1が押されいう情報を覚ておけば、たとえその後共通関数が呼ばれたとしてもどの入口から入ってきたのか判別可能にると思ますが、どうでしょうか?