複数のオプションボタンを1つのオプショングループに設定し、選択されたボタンによって変数を変えて処理を実行するツールを作成しています。
選択されたオプションボタンのラベル前景色を変更したいのですが、うまくいきません。
各オプションボタンのフォーカス取得時・喪失時に変更させると次の処理(コマンドボタン)に移ったときに色が変わってしまいます。
オプショングループのvalue値によってラベル色を指定することは可能でしょうか?
説明がわかりづらくてすみません。宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

あのー、よくわかっていないので申し訳ありませんが、


喪失時に変更させるため、次のコマンドボタンにフォーカスが移ったときに色が変わるのではないでしょうか?
各オプションボタンごとにしないで、
オプショングループの変更時イベントで、
どのオプションボタンが選択されたかで、
そのオプションボタンの前景色を変更したほうがいいのでは?
ラベルにLbel1・Label2のようにしておけば、
"Label" & オプショングループ のようなコードで指定できると思うのですが。
    • good
    • 0
この回答へのお礼

ありがとうございます!
各ラベルに名前をつけていたのでオプショングループの値をどう反映させたら良いのか悩んでしまっていました。
おっしゃる通りラベルに数字を入れて無事に解決できました。
本当にありがとうございました。

お礼日時:2003/10/02 10:47

上手く理解していなかったらごめんなさい。


ラベルの前景色(ForeColor)プロパティを変更したあと、
Me.Repaint
とか
Forms!frmForm1.Repaint
といった様に「repaintメソッド」を実行すると表示上も
変わると思います。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございました。
私の説明不足だったようで。。。
No.2の方のご回答の通りでうまくいきました。

お礼日時:2003/10/02 10:50

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAでオプションボタンによってコンボボックスの内容を変える方法

エクセルVBAのユーザーフォームでアンケートシートを作っています。
オプションボタン3つとコンボボックス1つで、和暦西暦とそれに対応する年数を表示したいと思っています。

オプションボタン3つのオブジェクト名はそれぞれ、
showa
heisei
seireki
となっており、コンボボックスは
bd_year
としています。


下記のように作ってみたのですが、うまくいきません。
どなたか、教えていただけませんか。
よろしくお願いします。


Private Sub bd_year_DropButtonClick()
Dim A1 As String, B1 As String, C1 As String
Dim i As Integer

A1 = v
For v = 1 To 64
Next v
B1 = w
For w = 1 To 30
Next w
C1 = x
For x = 1925 To 2020
Next x

If showa.Value = True Then
Me.bd_year.List = A1
End If
If heisei.Value = True Then
Me.bd_year.List = B1
End If
If seireki.Value = True Then
Me.bd_year.List = C1
End If

End Sub

エクセルVBAのユーザーフォームでアンケートシートを作っています。
オプションボタン3つとコンボボックス1つで、和暦西暦とそれに対応する年数を表示したいと思っています。

オプションボタン3つのオブジェクト名はそれぞれ、
showa
heisei
seireki
となっており、コンボボックスは
bd_year
としています。


下記のように作ってみたのですが、うまくいきません。
どなたか、教えていただけませんか。
よろしくお願いします。


Private Sub bd_year_DropButtonClick()
Dim A1 As String, B1...続きを読む

Aベストアンサー

こんにちは。

ご提示のように、bd_year_DropButtonClick イベントを使う
方法でも、出来なくはないのですが、珍しいやり方ですし、扱いが難しくなります。
普通は、オプションボタンのイベントから、コンボボックスのリストを変更します。

コンボボックスの_DropButtonClick イベントの難点は、
ドロップボタンを押した時だけではなくて、
表示中のリストから選択した時にも発生することや、
表示中のリストから再度選択し直したい時にも
ドロップボタンを押すことで余計なイベントが発生し、
不必要にリストの再設定をすることになるからです。
どちらかというと、無駄な処理をする回数の方が、
必要な処理をする回数よりも多くなってしまいます。
無駄な処理を回避することも可能ですが、
不自然な位、冗長な記述になります。
一番のデメリットは、メンテナンスに困った時に、
助けてくれる人が殆どいないであろう程に風変わりだということです。
私としても_DropButtonClick イベントを奨める訳にはいかないので、
オプションボタンの_Change イベントを
代替え案として提示します。
_Click イベントではなく、_Change イベントを奨める理由も、
同様に、無駄な処理を省いて煩雑さを軽減する意図です。
以下の記述を活かす場合は
現在お使いの Private Sub bd_year_DropButtonClick()
を、同時並行に使用することは出来ませんので、
コメントブロックするか、削除するか、してから、
試すようにしてください。
修正を加える必要があるとすれば、"年"を指す数値の部分だけです。


Private Sub heisei_Change()
Dim i As Long
  If heisei.Value = False Then Exit Sub
  With Me.bd_year
    .Clear
    For i = 1 To 30
      .AddItem i
    Next i
  End With
End Sub

Private Sub seireki_Change()
Dim i As Long
  If seireki.Value = False Then Exit Sub
  With Me.bd_year
    .Clear
    For i = 1925 To 2020
      .AddItem i
    Next i
  End With
End Sub

Private Sub showa_Change()
Dim i As Long
  If showa.Value = False Then Exit Sub
  With Me.bd_year
    .Clear
    For i = 1 To 64
      .AddItem i
    Next i
  End With
End Sub

こんにちは。

ご提示のように、bd_year_DropButtonClick イベントを使う
方法でも、出来なくはないのですが、珍しいやり方ですし、扱いが難しくなります。
普通は、オプションボタンのイベントから、コンボボックスのリストを変更します。

コンボボックスの_DropButtonClick イベントの難点は、
ドロップボタンを押した時だけではなくて、
表示中のリストから選択した時にも発生することや、
表示中のリストから再度選択し直したい時にも
ドロップボタンを押すことで余計なイベントが発生し、
不必要...続きを読む

QEXCELオプションボタンのグループ線非表示

Sub test()

Dim grp As Variant

excel2000

でフォームのオプションボタンを多数設置しており、グループボタンの線をまとめて

非表示にしようと、下記コードでやってみたところ、反応がありません。

どこをどう修正すれば、いいかアドバイスいただけないでしょうか?

よろしくお願いいたします。


For Each grp In Workbooks


If grp.Name Like "グループ*" Then


ActiveSheet.Shapes(grp).Visible = False

End If

Next grp
End Sub

Aベストアンサー

ざっくりこんなカンジで。

sub macro1()
 dim s as shape
 dim w As worksheet
 on error resume next

 set w = activesheet
’for each w in worksheets
 for each s In w.shapes
 if s.formcontroltype = xlgroupbox then
  s.visible = false
 end if
 next
’next
end sub

Qコンボとオプショングループでの抽出について

初心者です。よろしくお願いします。
access2000で商品の管理をしています。
商品テーブルから品名・金額・登録日、分類テーブルから分類を選択したフォームで分類・金額の範囲・登録日期間で抽出したいのです。
(1)分類をコンボで選択
(2)金額をオプショングループで選択(1万円未満、1万円以上5万円未満、5万円以上)
(3)登録日をオプショングループで選択(過去1ヶ月間、過去3ヶ月間、過去6ヶ月間)
(1)だけ、(2)だけ、(3)だけであればなんとかなったのですが、3つとも連動させる((1)で選んだものの中から(2)さらに(3)といった具合)にはどうしたらよいのでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

>初心者です
ちょっと引っかかるな・・・、結構難しいですよ

まず、オプションにはどちらも「全て」という選択肢を付け加えてください
たとえば金額で全てを選べば、金額に関する条件を外したということになります
この「全て」はオプショングループの既定値に指定しておきます
金額オプション 1:全て(既定値)
        2:1万円未満
        3:1万円以上5万円未満
        4:5万円以上
のように設定するのです。登録日も同様

後はクエリデザインビューで
分類の抽出条件欄に
=Forms!フォーム名!分類コンボ or Forms!フォーム名!分類コンボ is null
金額の抽出条件欄に
=金額オプション=1
or 金額オプション=2 and <10000
or 金額オプション=3 and >=10000 and <50000
or 金額オプション=4 and >=50000
登録日の抽出条件欄に
=登録日オプション=1
or 登録日オプション=2 and between dateadd("m",-1,date()) and date()
or 登録日オプション=3 and between dateadd("m",-3,date()) and date()
or 登録日オプション=4 and between dateadd("m",-6,date()) and date()

条件は全て1行に入力します
このクエリはデザインビューを閉じて開き直すと変なものに書き換えられてしまいますから
デバッグはデザインビューとデータシートビューを往復する形で行い
デバッグ完了後は、念のためにSQLビューで表示してから保存してください

>初心者です
ちょっと引っかかるな・・・、結構難しいですよ

まず、オプションにはどちらも「全て」という選択肢を付け加えてください
たとえば金額で全てを選べば、金額に関する条件を外したということになります
この「全て」はオプショングループの既定値に指定しておきます
金額オプション 1:全て(既定値)
        2:1万円未満
        3:1万円以上5万円未満
        4:5万円以上
のように設定するのです。登録日も同様

後はクエリデザインビューで
分類の抽出...続きを読む

Qexce VBA オプションボタンのリンクコピー

exel2000を利用しています。

チェックボタンのリンクコピーを下記プロシージャで利用していますが、オプションボタンだと、これをoptionbutton と変更して出きないみたいで、どのように変更すれば出来るか、ご教授願いたくお願いいたします。

Sub sample()
Dim cb As CheckBox
For Each cb In ActiveSheet.CheckBoxes
cb.LinkedCell = cb.TopLeftCell.Address
Next cb
End Sub

Aベストアンサー

その文脈でマクロを書くなら

sub macro1()
dim o as optionbutton
for each o in activesheet.optionbuttons
o.linkedcell = o.topleftcell.address
next
end sub

といった具合になりますが,既出回答にもあるようにそういうマクロを書いてもあまり意味がありません。

主なポイントは次の2点です
1.オプションボタンは所属するグループの中でリンクするセルを共有する
 (後から付けたリンクセルの設定が他のオプションボタンの設定を上書きする)
2.オプションボタンをグループに1つ配置しても,それ単独で付けたり消したりは原則出来ない
 (チェックボックスのようには働かない)



で。
実際の所で何をしたいのか不明瞭ですが,試しにこんなマクロを付けてみます。

1.フォームのオプションボタンをグループボックスは使わずに1個配置する
2.リンクするセルの設定は「しない」まま,右クリックして次のマクロを登録する

sub オプション1_Click()
 with activesheet.shapes(application.caller)
 .topleftcell.value = not .topleftcell.value
 .controlformat.value = -.topleftcell.value
 end with
end sub

3.オプションボタンを載せたセルごとコピーして複製する

その文脈でマクロを書くなら

sub macro1()
dim o as optionbutton
for each o in activesheet.optionbuttons
o.linkedcell = o.topleftcell.address
next
end sub

といった具合になりますが,既出回答にもあるようにそういうマクロを書いてもあまり意味がありません。

主なポイントは次の2点です
1.オプションボタンは所属するグループの中でリンクするセルを共有する
 (後から付けたリンクセルの設定が他のオプションボタンの設定を上書きする)
2.オプションボタンをグループに1つ配置しても,それ...続きを読む

Qオプションメニュー設定について

ホームページビルダーのオプションメニューで下記の設定をしています。
<SELECT NAME="hai_hi">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</SELECT>
オプションメニューの中にブランクを選択できる表示の設定を教えてください。

               以上

ホームページビルダーのオプションメニューで下記の設定をしています。
<SELECT NAME="hai_hi">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<...続きを読む

Aベストアンサー

<SELECT NAME="hai_hi">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</SELECT>

これで・・・

QWord2010 差し込み印刷のラベルオプションの設定

Word2010の差し込み印刷のラベルで
右の画像のように列の間に4㎜の間隔がある
ラベルの数値の設定はどのようにするのですか

Aベストアンサー

水平方向の間隔をラベル幅91mm+間隔の4mmで95mmとすればいいでしょう。

QHTML オプションメニューの自動作成

下記のようなオプションメニューで連続した項目を作るには?
javascrip でfor文を使って出来ないでしょうか?
また onLoad="楽に作る関数" とかで最初からこのオプションメニューを自動作成出来ませんか?



<SELECT>
<OPTION value="123" selected>123</OPTION>
<OPTION value="124" selected>124</OPTION>
<OPTION value="125" selected>125</OPTION>
<OPTION value="126" selected>126</OPTION>
<OPTION value="127" selected>127</OPTION>
<OPTION value="128" selected>128</OPTION>
<OPTION value="129" selected>129</OPTION>
<OPTION value="130" selected>130</OPTION>
</SELECT>

よろしくお願します。

下記のようなオプションメニューで連続した項目を作るには?
javascrip でfor文を使って出来ないでしょうか?
また onLoad="楽に作る関数" とかで最初からこのオプションメニューを自動作成出来ませんか?



<SELECT>
<OPTION value="123" selected>123</OPTION>
<OPTION value="124" selected>124</OPTION>
<OPTION value="125" selected>125</OPTION>
<OPTION value="126" selected>126</OPTION>
<OPTION value="127" selected>127</OPTION>
<OPTION value="128" selected>128</OPTION>
<OPTION ...続きを読む

Aベストアンサー

全部selectedなの?勝手に変更。

<script type="text/javascript">
var i=0,ht =[],d=128;
ht[i] = '<select id="tekitouni">';
for( var i=123; i<131;)
ht[i] = '<option value="'+i+'"'+(i==d?' selected':'')+'>'+(i++)+'</option>';

ht[i] = '</select>';
document.write( ht.join('') );

</script>

Q処理状況をラベルに表示させる方法

お世話になります。
ユーザーフォームから起動するマクロで、処理の途中経過をフォーム内
のラベルに表示させようとしました。
A列に支店名が入っていて、支店名順にソートされています。
現在どの支店の処理を行っているかラベルに表示させようと以下のような
コードを書きました。

Sub CommandButton1_Click()
Dim rIdx As Long
rIdx = 1
Do Until Cells(rIdx + 1, 1).Value = ""
rIdx = rIdx + 1
If Cells(rIdx, 1).Value <> Cells(rIdx - 1, 1).Value Then
Label1.Caption = Cells(rIdx, 1).Value
End If
'※以下、更新処理
Loop
End Sub


しかし、処理中は表示されず、処理終了後に最後の行の支店名が表示
されるだけです。
ラベルのCaptionを変更した後、強制的にフォームを更新表示させるよ
うな方法はありますか。

よろしくお願いいたします。

お世話になります。
ユーザーフォームから起動するマクロで、処理の途中経過をフォーム内
のラベルに表示させようとしました。
A列に支店名が入っていて、支店名順にソートされています。
現在どの支店の処理を行っているかラベルに表示させようと以下のような
コードを書きました。

Sub CommandButton1_Click()
Dim rIdx As Long
rIdx = 1
Do Until Cells(rIdx + 1, 1).Value = ""
rIdx = rIdx + 1
If Cells(rIdx, 1).Value <> Cells(rIdx - 1, 1).Value Then
Label1.Caption...続きを読む

Aベストアンサー

キャプションの値をセットした後でRepaintしては?

UserForm1.Label1.Caption = Cells(rIdx, 1).Value
UserForm1.Repaint

Q連想配列を使ってコンボボックスを設定したい

JavaScriptの初心者です。

var cd_0001 = new Object();
cd_0001["0001"]="アフリカ";
cd_0001["0002"]="南アメリカ";
cd_0001["0003"]="カリブ海/南アメリカ";
cd_0001["0004"]="アジア";
cd_0001["0005"]="オセアニア";
上記のような連想配列があります。
これを使って以下のようなコンボボックスを
作りたいのです。

<select name="cmb">
<option value="0001" selected>アフリカ</option>
<option value="0001">フィルター</option>
<option value="0002">南アメリカ</option>
<option value="0003">カリブ海/南アメリカ</option>
<option value="0004">アジア</option>
<option value="0005">オセアニア</option>
</select>

コンボボックスを作成する部分はネットで検索し
見つけました。
ですが、連想配列から全てのKEYと値を
取得することができません。
どのようにすれば取得することができるのでしょうか?

意味わかりますか?
説明がわかりにくく申し訳ございません。

よろしくお願いします。

JavaScriptの初心者です。

var cd_0001 = new Object();
cd_0001["0001"]="アフリカ";
cd_0001["0002"]="南アメリカ";
cd_0001["0003"]="カリブ海/南アメリカ";
cd_0001["0004"]="アジア";
cd_0001["0005"]="オセアニア";
上記のような連想配列があります。
これを使って以下のようなコンボボックスを
作りたいのです。

<select name="cmb">
<option value="0001" selected>アフリカ</option>
<option value="0001">フィルター</option>
<option value="0002">南アメリカ</option>
<option valu...続きを読む

Aベストアンサー

for in を使ってできます。

var cd_0001 = new Object();
cd_0001["0001"]="アフリカ";
cd_0001["0002"]="南アメリカ";
cd_0001["0003"]="カリブ海/南アメリカ";
cd_0001["0004"]="アジア";
cd_0001["0005"]="オセアニア";

for(var X in cd_0001) {
alert(X + cd_0001[X])
}

参考URL:http://www.tohoho-web.com/js/statement.htm#stFor

Q一太郎でチェックボックス、オプションボタン、リストボックスの作成

一太郎で下記のような事は出来ますでしょうか。
http://www.r-kansai.ricoh.co.jp/jyouhou/naomi/word/51-100/55.html

Aベストアンサー

ジャストシステムの掲示板にも同内容で書き込まれていますね。

Blendyさんから教えて貰いました。
http://www.k5.dion.ne.jp/~plan/input/input.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング