
度々お世話になっております。
基本的なことだとは思うのですが,うまく探せませんでしたので質問させてください。
現在,次のようなプログラムをVB6.pro環境で作っています。
・ボタン(command1)を押す→ボタンの色が赤に変わる
ソースは以下の通りです。
Private Sub Command1_Click()
Call ColorChange(Command1)
End Sub
Sub ColorChange(Obj As Object)
Obj.BackColor = vbRed
End Sub
以上のプログラムでは,サブルーチンを呼び出す際に
オブジェクト名(Command1)をダイレクトに入力していますが,
これを自動で入力する関数はありますでしょうか。
Form1ならば,Meのようなものです。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
s_husky です。
次は、Command1のCaptionを書き換えるコードです。
Option Explicit
Private Sub Command1_Click()
CaptionChange
End Sub
Private Sub CaptionChange()
On Error Resume Next
Me.Controls(Screen.ActiveControl.Name).Caption = "AAAAA"
MsgBox "Next"
Screen.ActiveControl.Caption = "bbbbb"
End Sub
なるほど!押された瞬間はアクティブなので,
Screen.ActiveControlなる関数を使えば特定できるのですね。
アクティブなものを指定できるので,SetFocusと一緒に使えば
色々な応用が利きそうです。
ご回答ありがとうございました。
ところで,もしお時間があればお答えいただきたいのですが,
Me.Controls(Screen.ActiveControl.Name)
と
Screen.ActiveControl
は,どのように違うのでしょうか。
後者のみでコードを書いた場合,あるいは前者のみで書いた場合
両方を試してみたのですが,見た目には同じ動きでした。
No.4
- 回答日時:
> 実は,複数のボタンで同じような動作をしたいのです。
ボタンをコントロール配列にしてしまえば、イベントは一つ書くだけです。
Private Sub Command1_Click(Index As Integer)
Me.Command1(Index).BackColor = vbRed
End Sub
ご回答ありがとうございます。
確かに,ボタンのみであればコントロール配列で解決できます。
ただ,サブルーチンを呼び出した元のオブジェクト名がわかれば,
コントロール配列にしていないオブジェクトにも応用できますし,
様々な利用の仕方ができると思ったので,質問させていただきました。
#3の方の方法で,ある程度は解決できるので,それでやってみます。
(ある程度と書いたのは,Timerなどバックグラウンドで動く
オブジェクトには,Screen.ActiveControlが使えないからです)
貴重なお時間をいただき,ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
-
4
変数をコントロール型で使用する方法
Visual Basic(VBA)
-
5
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
6
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
7
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
8
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
ExcelのシートをAccessで表示し...
-
Excel VBAでマウスの左クリック...
-
Accessのフォーム上にエクセル...
-
構造体の静的な初期化
-
C#で画像をクリップボードへの...
-
VBからCrystalReportsへSQL文を...
-
【エクセルのマクロ】クリップ...
-
VB6.0同一プログラム上で複数の...
-
サブルーチンにオブジェクト名...
-
VBAでオブジェクトを小数点で位...
-
【エクセル】複数のTextBoxに共...
-
VBでExcelの表形式の様なデザイ...
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
アクセスのテーブルを隠す?
-
このロジックの修正点を教えて...
-
文字列で小数点以下の0を削除し...
-
エクセルVBAでセル番地を指定し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Accessのフォーム上にエクセル...
-
エクセルVBAでセル番地を指定し...
-
VBAで選択範囲外の図形(オブジ...
-
Excel VBAでマウスの左クリック...
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
文字列で小数点以下の0を削除し...
-
VBでExcelの表形式の様なデザイ...
-
ExcelのシートをAccessで表示し...
-
PowerpointVBAで指定のShapeオ...
-
【エクセル】複数のTextBoxに共...
-
【エクセルのマクロ】クリップ...
-
GDIオブジェクトが増える……
-
現在アクティブになっているオ...
-
サブルーチンにオブジェクト名...
-
ビデオキャプチャについて
-
WebBrowser内のフォームをsubmi...
-
コードでオブジェクトを最前面に
おすすめ情報