
度々お世話になっております。
基本的なことだとは思うのですが,うまく探せませんでしたので質問させてください。
現在,次のようなプログラムを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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
ChexBox1等の「1」を変数にで...
-
アクセスで説明の欄の隠しオブ...
-
GDIオブジェクトが増える……
-
【エクセルのマクロ】クリップ...
-
Excelのシート上に設置された全...
-
サブルーチンにオブジェクト名...
-
エクセルVBAでセル番地を指定し...
-
Excelを閉じるときVBAプロジェ...
-
Accessのフォーム上にエクセル...
-
「ご処理進めて頂きますようお...
-
UMLでの例外処理
-
VBAでループ内で使う変数名を可...
-
CloseとDisposeの違い
-
尻毛って処理する?。
-
エクセルVBAで、MsgBox やInput...
-
VBAでCOPYを繰り返すと、処理が...
-
ACCESS DCOUNTの抽出条件について
-
UPS警告音を止めたい
-
エクセルの画面にユーザーフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
ChexBox1等の「1」を変数にで...
-
Excel VBAでマウスの左クリック...
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
文字列で小数点以下の0を削除し...
-
【エクセル】複数のTextBoxに共...
-
日本語の文字化けを直す方法
-
エクセルVBAでセル番地を指定し...
-
ExcelのシートをAccessで表示し...
-
サブルーチンにオブジェクト名...
-
Excel2007 でのチェックボック...
-
コードでオブジェクトを最前面に
-
ユーザーフォームのインポート...
-
現在アクティブになっているオ...
-
クリスタルレポートのプレビュ...
-
Bitmap.GetPixelより高速なもの
-
vba ユーザーフォームのテキス...
-
Imageコントロールにグラフを表...
おすすめ情報