フォーム上にcmdStartというコマンドボタンが3個あります。それをクリックすると使用不可になるというプロシージャーですが、(1)のイベントに対して、(2)で処理する場合、下のようにやると、型がちがうといってエラーになります。
この場合、コントロールの配列を次のモジュールに渡すにはどのように書いたらいいのでしょうか?
(1)
Private Sub cmdStart_Click(Index As Integer)
processGet cmdStart()
End Sub
(2)
Public Sub processGet(pcmdStart() As Control)
Dim i As Integer
For i = 0 to 2
pcmdStart(i).Enabled=False
Next i
End Sub
No.5ベストアンサー
- 回答日時:
Variant型で渡すしかないでしょう。
Private Sub Command1_Click(Index As Integer)
EnableControls Command1, False
End Sub
Public Sub EnableControls(ByRef Ctrls As Variant, ByVal Flag As Boolean)
Dim c As Control
For Each c In Ctrls
c.Enabled = Flag
Next
End Sub
No.4
- 回答日時:
これはダメというご指摘を受けるかもしれませんが、
Public Sub processGet(pcmdStart As Variant)
Dim i As Integer
For i = 0 To 2
pcmdStart(i).Enabled = False
Next i
End Sub
にしたらできました。(できたというだけで、使っていいか自信無しです)
(不安ですので、もっと専門の人が回答してくれるといいのですが)
No.2
- 回答日時:
#1です。
For Next文なら、(bas)を下記に変えても出来ます。Public Sub processGet(Index As Control)
Dim i As Integer
For i = 0 To 2
If i = Index Then
Form1.cmdStart(i).Enabled = False
End If
Next
以上。
No.1
- 回答日時:
確認ですが、cmdStartをクリックするとクリックしたボタンだけが、使用不可になればいいのでしょうか?
その場合
(Form1)
Option Explicit
Private Sub cmdStart_Click(Index As Integer)
cmdStart(0).Enabled = True
cmdStart(1).Enabled = True
cmdStart(2).Enabled = True
processGet Index
End Sub
(bas)
Option Explicit
Public Sub processGet(Index As Integer)
Select Case Index
Case 0
Form1.cmdStart(0).Enabled = False
Form1.cmdStart(1).Enabled = True
Form1.cmdStart(2).Enabled = True
Case 1
Form1.cmdStart(0).Enabled = True
Form1.cmdStart(1).Enabled = False
Form1.cmdStart(2).Enabled = True
Case 2
Form1.cmdStart(0).Enabled = True
Form1.cmdStart(1).Enabled = True
Form1.cmdStart(2).Enabled = False
End Select
End Sub
で、いかがですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VB6 配列を初期化したい
Visual Basic(VBA)
-
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
配列を関数に渡す方法
Visual Basic(VBA)
-
-
4
VBの画面サイズについて
Visual Basic(VBA)
-
5
frxファイルの役目
Visual Basic(VBA)
-
6
アスキーコードへの変換について VB6(初心者)
Visual Basic(VBA)
-
7
VB6で配列を引数にするときの2通りの方法について
Visual Basic(VBA)
-
8
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
9
VB6でForm_Load中にイベントを発生させない方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
セルをマクロのボタンにしたい。
-
VBAのボタンの位置が変わって困...
-
VBA CommandButtonの文字ずれ
-
回数のカウント
-
CommandButtonのCaptionを変化...
-
コマンドボタンやイメージにマ...
-
ボタンにセットフォーカスする...
-
バックスペース機能の作り方
-
閉じると「+」になり開くと「-...
-
VBAでオプションボタンによって...
-
VBA IE ダウンロード ダイアロ...
-
C♯初心者で、四則演算の電卓を...
-
エクセル 検索マクロ オート...
-
Vba 電卓 一文字消すボタン
-
Access VBA でデータペーストを...
-
コントロールの背景色を
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
コマンドボタンやイメージにマ...
-
プロシージャからイベントをコ...
-
Access VBA でデータペーストを...
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
-
Excel マクロ 閉じるボタン
-
ボタン
-
CommandButtonのCaptionを変化...
-
VB.NETでマウスクリックイベン...
-
ボタンの枠線の様なものを消したい
-
C#で動的に作ったtextboxを消す。
おすすめ情報