
複数のコマンドボタン(VBAで)を一つにまとめたい。
Private Sub CommandButton1_Click()
Application.Goto Reference:=Range("A7"), Scroll:=True
End Sub
Private Sub CommandButton2_Click()
Application.Goto Reference:=Range("A29"), Scroll:=True
End Sub
Private Sub CommandButton3_Click()
Application.Goto Reference:=Range("A51"), Scroll:=True
End Sub
Private Sub CommandButton4_Click()
Application.Goto Reference:=Range("A73"), Scroll:=True
End Sub
Private Sub CommandButton5_Click()
Application.Goto Reference:=Range("A95"), Scroll:=True
End Sub
Private Sub CommandButton6_Click()
Application.Goto Reference:=Range("A117"), Scroll:=True
End Sub
Private Sub CommandButton7_Click()
Application.Goto Reference:=Range("A139"), Scroll:=True
End Sub
Private Sub CommandButton8_Click()
Application.Goto Reference:=Range("A161"), Scroll:=True
End Sub
Private Sub CommandButton9_Click()
Application.Goto Reference:=Range("A183"), Scroll:=True
End Sub
Private Sub CommandButton10_Click()
Application.Goto Reference:=Range("A205"), Scroll:=True
End Sub
Private Sub CommandButton11_Click()
Application.Goto Reference:=Range("A227"), Scroll:=True
End Sub
上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?
No.3ベストアンサー
- 回答日時:
ふたつ答えを出しておきますので、お好きなほうを使えばよいです。
フォームコントロールですれば、早いと思います。あえて、OLEコントロールツールでというなら、インスタンスを設けます。
Index にしていますから、ツールのCaptionの名称は関係がありません。上(または左)から順番になります。
'//フォームコントロール用
Sub Buttons_Click()
Dim objCnt As Object
Dim i As Long
If TypeName(Application.Caller) = "String" Then
On Error Resume Next
Set objCnt = ActiveSheet.Buttons(Application.Caller)
If Err.Number > 0 Then Exit Sub
On Error GoTo 0
End If
i = objCnt.Index - 1
Application.Goto Cells(i * 22 + 7, 1), Scroll:=True
End Sub
'===========
'OLEコントロールの場合
'//Class1 (クラスモジュール)
Public WithEvents myBtn As MSForms.CommandButton 'モジュール上部へ
Private Sub myBtn_Click()
Dim i As Integer
i = myBtn.Index - 1
Application.Goto ActiveSheet.Cells(i * 22 + 7, 1), Scroll:=True
''MsgBox ActiveSheet.Cells(i * 22 + 7, 1).Address 'チェック用
End Sub
'//標準モジュール
Public myClass As New Class1 'モジュール上部へ
Sub Auto_Open()
Dim ctrl As Object
Dim i As Integer
Static myClass() As Class1
For Each ctrl In Worksheets("Sheet1").OLEObjects '明示的にシート名を入れる
If TypeOf ctrl.Object Is MSForms.CommandButton Then
ReDim Preserve myClass(i)
Set myClass(i) = New Class1
Set myClass(i).myBtn = ctrl.Object
i = i + 1
End If
Next
End Sub
'戻る側がありませんが、ダブルクリック・イベントなりで、元に戻るほうを入れたほうがよいですね。
No.2
- 回答日時:
おはようございます
プロシージャや関数から別のプロシージャや関数を呼び出すことが出来ます。
このとき、変数を渡すことも出来ます。
以下はサンプルです。
Private Sub CommandButton1_Click()
Call JampToCell("A7")
End Sub
Private Sub CommandButton2_Click()
Call JampToCell("A29")
End Sub
Private Sub CommandButton3_Click()
Call JampToCell("A51")
End Sub
Private Sub JampToCell(TargetCell As String)
Application.Goto Range(TargetCell), True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Visual Basic(VBA) でシートをコピーしたときに 見えないようにする方法 1 2022/04/10 20:27
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) エクセルVBAで次の二つを行いたいのですが思うように動きません。どう修正したらよいのでしょうか? 2 2023/04/22 14:55
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
このQ&Aを見た人はこんなQ&Aも見ています
-
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
VBAで多数のプログラムを一つのボタンに集約することは可能でしょうか?
Visual Basic(VBA)
-
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
-
4
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
5
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
8
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
9
最初の1回のみにボタンクリックでマクロ実行する
Visual Basic(VBA)
-
10
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
11
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ユーザーフォームの Keypre...
-
ExcelVBAでListViewが使用できない
-
'ckbl' コントロールは作成され...
-
全てのオブジェクトのプロパテ...
-
EXCELでactivexコントロールを...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
C# Form上に配置されたコントロ...
-
PDQCommは今でも入手できますで...
-
エクセルVBAでオプションボタン...
-
Validated イベントについて
-
チェックボックスをオンにした...
-
エクセル コントロールツール...
-
Labelコントロールの(左右)余...
-
AccessのDataGridコントロール...
-
ActiveXコントロールはどこへい...
-
教えてください
-
カメラスクロールするのを動画...
-
C#で角が丸いテキストボックス
-
listviewの設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELでactivexコントロールを...
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
チェックボックスをオンにした...
-
VBA ユーザーフォームの Keypre...
-
chr関数の呼び出しで「プロ...
-
'ckbl' コントロールは作成され...
-
ExcelVBAでListViewが使用できない
-
全てのオブジェクトのプロパテ...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
エクセル コントロールツール...
-
ユーザーフォームで動的(Me.Con...
-
OCXって何ですか?
-
C#で角が丸いテキストボックス
-
Groupboxの配下のコントロール...
-
Labelコントロールの(左右)余...
-
excel vbaでユーザーフォームに...
おすすめ情報