アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォーム上に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

A 回答 (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
    • good
    • 0
この回答へのお礼

これでいけそうな気がします。ありがとうございました。

お礼日時:2003/10/06 12:29

これはダメというご指摘を受けるかもしれませんが、



Public Sub processGet(pcmdStart As Variant)
Dim i As Integer

For i = 0 To 2
pcmdStart(i).Enabled = False
Next i
End Sub

にしたらできました。(できたというだけで、使っていいか自信無しです)
(不安ですので、もっと専門の人が回答してくれるといいのですが)
    • good
    • 0

またまた#1です。


先ほどのプロシージャの引数を間違っています。
×:Index as Control →正:Index as Integer 
    • good
    • 0

#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

以上。
    • good
    • 0

確認ですが、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

で、いかがですか?

この回答への補足

目的はコントロールごとパラメータとして渡すというものだったので。。。

補足日時:2003/10/06 12:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています