ここから本文です

ExcelVBAでフォームコントロールのスピンボタンで上下でマクロの処理を分ける方法...

aru********さん

2017/7/919:20:51

ExcelVBAでフォームコントロールのスピンボタンで上下でマクロの処理を分ける方法はありますか。

ボタンをクリックするとスピンボタンをコピーするようにしたいのですが、ActiveXコントロールだとマクロも同時にコピーすることはできませんでした。
そこでフォームコントロールのスピンボタンを使用し、マクロも含めてコピーするようにしようと思ったのですが、フォームコントロールだとスピンボタンの上下で処理を分ける方法がわかりませんでした。

そこで質問なのですが、
1.フォームコントロールのスピンボタンの上下でマクロの処理を分ける
2.ActiveXのスピンボタンをコピーした際にマクロもコピーする
上記のどちらかを行うにはどうしたらよいのでしょうか。

VBAを始めたばかりで説明がうまくできませんが、回答よろしくお願いいたします。

閲覧数:
261
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

sk_********さん

2017/7/920:46:52

1.の方について回答します。あくまでひとつの例です。

前提として、フォームコントロールのスピンボタンのリンクセルが、セル[A1]に設定されているものとします。

Sub Sample()
If Range("B1").Value < Range("A1").Value Then
MsgBox "+"
Else
MsgBox "-"
End If
Range("B1").Value = Range("A1").Value
End Sub

こちらのコードをマクロ登録すれば、値の増減で分岐を行うことができます。
セル[B1]とセル[A1]を比較することで、分岐しています。コードの最後に、スピンボタンで増減した値をセル[B1]に記録しています。
セル[B1]の部分を静的変数に置き換えることもできます。

質問した人からのコメント

2017/7/16 07:52:29

なるほど!イベントを使用するのではなくセル上で比較して分岐できるのですね。
この方法で作ってみたいと思います。
回答ありがとうございました!

ベストアンサー以外の回答

1〜1件/1件中

kak********さん

2017/7/920:55:50

1、SpinUp、SpinDownと言うイベントがあるので、それで処理を分ける。
2、Classモジュールを利用して、Spinボタンの「ラッパー」と言うクラスを定義して利用する。

1、はたぶん理解できると思います。
2、は質問者さんにはまだ難しいかな。

なのでコントロールをコピーするのではなく、コントロールはあらかじめフォームなりに非表示で配置しておいて、ボタンイベントでそのコントロールを表示するような動作で代用されてはと思います。
これならコードをコピーする必要はないと思いますが。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる