Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7283 / 13645 ツリー ←次へ | 前へ→

【40000】指定したlabelのbackcolorの変更 taka 06/7/5(水) 9:20 質問[未読]
【40003】Re:指定したlabelのbackcolorの変更 たけ 06/7/5(水) 10:55 発言[未読]
【40004】Re:指定したlabelのbackcolorの変更 taka 06/7/5(水) 11:05 質問[未読]
【40005】Re:指定したlabelのbackcolorの変更 たけ 06/7/5(水) 11:12 発言[未読]
【40109】Re:指定したlabelのbackcolorの変更 漂流民 06/7/6(木) 23:51 発言[未読]
【40111】Re:指定したlabelのbackcolorの変更 taka 06/7/7(金) 8:23 お礼[未読]

【40000】指定したlabelのbackcolorの変更
質問  taka  - 06/7/5(水) 9:20 -

引用なし
パスワード
   おはようございます。
comboboxの値によって、下記のコードの様に指定したlabelのbackcolorを変更したいのですが、うまくいきません・・・・。
例えば、7を選択し、label23.65の色は変わるのですが、次に10を選択すると、7で選択して変わったlabelの色はそのまま残り、10で選択したlabelの色がプラスされてしまいます。
又、下記コードに無い値を選択した場合は、labelの色は変更させたくないのですが・・・。
よろしくお願い致します。


If ComboBox1 = 7 Then
  Label23.BackColor = &HC0C0FF
  Label65.BackColor = &HC0C0FF
ElseIf ComboBox1 = 9 Then
  Label23.BackColor = &HC0C0FF
  Label65.BackColor = &HC0C0FF
 ElseIf ComboBox1 = 10 Then
   Label9.BackColor = &HC0C0FF
   Label51.BackColor = &HC0C0FF
  ElseIf ComboBox1 = 11 Then
   Label6.BackColor = &HC0C0FF
   Label48.BackColor = &HC0C0FF
   Label26.BackColor = &HC0C0FF
   Label68.BackColor = &HC0C0FF
  ElseIf ComboBox1 = 1 Then
    Label2.BackColor = &HC0C0FF
    Label44.BackColor = &HC0C0FF
    Label9.BackColor = &HC0C0FF
    Label51.BackColor = &HC0C0FF
   ElseIf ComboBox1 = 2 Then
    Label16.BackColor = &HC0C0FF
    Label58.BackColor = &HC0C0FF
    ElseIf ComboBox1 = 3 Then
     Label24.BackColor = &HC0C0FF
     Label66.BackColor = &HC0C0FF
End If

【40003】Re:指定したlabelのbackcolorの変更
発言  たけ  - 06/7/5(水) 10:55 -

引用なし
パスワード
   ▼taka さん:
>おはようございます。
>comboboxの値によって、下記のコードの様に指定したlabelのbackcolorを変更したいのですが、うまくいきません・・・・。
>例えば、7を選択し、label23.65の色は変わるのですが、次に10を選択すると、7で選択して変わったlabelの色はそのまま残り、10で選択したlabelの色がプラスされてしまいます。
>又、下記コードに無い値を選択した場合は、labelの色は変更させたくないのですが・・・。
>よろしくお願い致します。
>
>
>If ComboBox1 = 7 Then
>  Label23.BackColor = &HC0C0FF
>  Label65.BackColor = &HC0C0FF
> ElseIf ComboBox1 = 9 Then
>  Label23.BackColor = &HC0C0FF
>  Label65.BackColor = &HC0C0FF
> ElseIf ComboBox1 = 10 Then
>   Label9.BackColor = &HC0C0FF
>   Label51.BackColor = &HC0C0FF
>  ElseIf ComboBox1 = 11 Then
>   Label6.BackColor = &HC0C0FF
>   Label48.BackColor = &HC0C0FF
>   Label26.BackColor = &HC0C0FF
>   Label68.BackColor = &HC0C0FF
>  ElseIf ComboBox1 = 1 Then
>    Label2.BackColor = &HC0C0FF
>    Label44.BackColor = &HC0C0FF
>    Label9.BackColor = &HC0C0FF
>    Label51.BackColor = &HC0C0FF
>   ElseIf ComboBox1 = 2 Then
>    Label16.BackColor = &HC0C0FF
>    Label58.BackColor = &HC0C0FF
>    ElseIf ComboBox1 = 3 Then
>     Label24.BackColor = &HC0C0FF
>     Label66.BackColor = &HC0C0FF
> End If

どのタイミングで、提示されたコードが動くのかは分かりませんが、
comboboxの値で各ラベルの背景色を変更しようとしてるんですよね。

combobox1の値が「7」だったら、label23とlabel65の背景色を変更してますよね。
ということは、combobox1が「7」以外であれば、label23とlabel65の背景色は変更しない。つまり、変更されていたら元の色に戻す。
という処理が必要になりますよね。
その処理が抜けているから、背景色が変更されたままになっているだけだと思います。

また、「comboboxの値」と自分で書かれているのですから、ComboBox1.Valueとちゃんと書いたほうが分かりやすいと思いませんか?
ComboBoxオブジェクトには複数のプロパティがあり、Valueプロパティもその一つです。
プロパティを省略した場合、Valueプロパティと自動的に判断してくれるみたいですから、問題なく動くのでしょうけど、他人に見せるときはできるだけ親切なコードのほうがいいですよね。

【40004】Re:指定したlabelのbackcolorの変更
質問  taka  - 06/7/5(水) 11:05 -

引用なし
パスワード
   ▼たけ さん:
>▼taka さん:
>>おはようございます。
>>comboboxの値によって、下記のコードの様に指定したlabelのbackcolorを変更したいのですが、うまくいきません・・・・。
>>例えば、7を選択し、label23.65の色は変わるのですが、次に10を選択すると、7で選択して変わったlabelの色はそのまま残り、10で選択したlabelの色がプラスされてしまいます。
>>又、下記コードに無い値を選択した場合は、labelの色は変更させたくないのですが・・・。
>>よろしくお願い致します。
>>
>>
>>If ComboBox1 = 7 Then
>>  Label23.BackColor = &HC0C0FF
>>  Label65.BackColor = &HC0C0FF
>> ElseIf ComboBox1 = 9 Then
>>  Label23.BackColor = &HC0C0FF
>>  Label65.BackColor = &HC0C0FF
>> ElseIf ComboBox1 = 10 Then
>>   Label9.BackColor = &HC0C0FF
>>   Label51.BackColor = &HC0C0FF
>>  ElseIf ComboBox1 = 11 Then
>>   Label6.BackColor = &HC0C0FF
>>   Label48.BackColor = &HC0C0FF
>>   Label26.BackColor = &HC0C0FF
>>   Label68.BackColor = &HC0C0FF
>>  ElseIf ComboBox1 = 1 Then
>>    Label2.BackColor = &HC0C0FF
>>    Label44.BackColor = &HC0C0FF
>>    Label9.BackColor = &HC0C0FF
>>    Label51.BackColor = &HC0C0FF
>>   ElseIf ComboBox1 = 2 Then
>>    Label16.BackColor = &HC0C0FF
>>    Label58.BackColor = &HC0C0FF
>>    ElseIf ComboBox1 = 3 Then
>>     Label24.BackColor = &HC0C0FF
>>     Label66.BackColor = &HC0C0FF
>> End If
>
>どのタイミングで、提示されたコードが動くのかは分かりませんが、
>comboboxの値で各ラベルの背景色を変更しようとしてるんですよね。
>
>combobox1の値が「7」だったら、label23とlabel65の背景色を変更してますよね。
>ということは、combobox1が「7」以外であれば、label23とlabel65の背景色は変更しない。つまり、変更されていたら元の色に戻す。
>という処理が必要になりますよね。
>その処理が抜けているから、背景色が変更されたままになっているだけだと思います。
>
>また、「comboboxの値」と自分で書かれているのですから、ComboBox1.Valueとちゃんと書いたほうが分かりやすいと思いませんか?
>ComboBoxオブジェクトには複数のプロパティがあり、Valueプロパティもその一つです。
>プロパティを省略した場合、Valueプロパティと自動的に判断してくれるみたいですから、問題なく動くのでしょうけど、他人に見せるときはできるだけ親切なコードのほうがいいですよね。

ありがとうございました。
変更されていたら元に戻す場合のコードがよく分からないのですが・・・。

【40005】Re:指定したlabelのbackcolorの変更
発言  たけ  - 06/7/5(水) 11:12 -

引用なし
パスワード
   ▼taka さん:
>ありがとうございました。
>変更されていたら元に戻す場合のコードがよく分からないのですが・・・。

元に戻すという考え方をコードにすることは私にはムリです。
元に戻すという考え方ではなく、元々の色に変更するという考えでできませんか?

【40109】Re:指定したlabelのbackcolorの変更
発言  漂流民  - 06/7/6(木) 23:51 -

引用なし
パスワード
   ▼taka さん:
こんばんわ
キリ番オメ!

理解出来ても出来なくても、求めていた回答ではなくてもレスは付けましょう。
[#39924]
掲示板のトップにあるように「有志のボランティア精神」の皆さんが回答しています。
例えば、taka さんが回答者でスレ主からレスもなく新たに別スレを立てたらどう思いますか?

>comboboxの値によって、下記のコードの様に指定したlabelのbackcolorを変更したいのですが、うまくいきません・・・・。
>例えば、7を選択し、label23.65の色は変わるのですが、次に10を選択すると、7で選択して変わったlabelの色はそのまま残り、10で選択したlabelの色がプラスされてしまいます。
ついでなので、参考までにサンプルを、

(オブジェクト名が"Label"で始まる全てのオブジェクトに対応)
'*****標準モジュール*******************
Public lc() As Long

Sub test()
  UserForm1.Show
End Sub

'*****ユーザーフォームモジュール*******************
Private Sub UserForm_Initialize()
  Dim i As Long
  Dim j As Long
  j = 0
  For i = 0 To Me.Controls.Count - 1
    If Left(Me.Controls(i).Name, 5) = "Label" Then
      ReDim Preserve lc(2, j)
      lc(1, j) = i
      lc(2, j) = Me.Controls(i).BackColor
      j = j + 1
    End If
  Next i
  ComboBox1.AddItem 0
  ComboBox1.AddItem 1
  ComboBox1.AddItem 2
  ComboBox1.AddItem 3
End Sub

Private Sub ComboBox1_Change()
  Call defcol
  Select Case ComboBox1
    Case 1
      Label1.BackColor = &HC0C0FF
      Label2.BackColor = &HC0C0FF
    Case 2
      Label3.BackColor = &HC0C0FF
      Label4.BackColor = &HC0C0FF
    Case 3
      Label5.BackColor = &HC0C0FF
      Label6.BackColor = &HC0C0FF
  End Select
End Sub

Private Function defcol()
  Dim i As Long
  For i = LBound(lc, 2) To UBound(lc, 2)
    Me.Controls(lc(1, i)).BackColor = lc(2, i)
  Next i
End Function

【40111】Re:指定したlabelのbackcolorの変更
お礼  taka  - 06/7/7(金) 8:23 -

引用なし
パスワード
   ▼漂流民 さん:
>▼taka さん:
>こんばんわ
>キリ番オメ!
>
>理解出来ても出来なくても、求めていた回答ではなくてもレスは付けましょう。
>[#39924]
>掲示板のトップにあるように「有志のボランティア精神」の皆さんが回答しています。
>例えば、taka さんが回答者でスレ主からレスもなく新たに別スレを立てたらどう思いますか?
>
>>comboboxの値によって、下記のコードの様に指定したlabelのbackcolorを変更したいのですが、うまくいきません・・・・。
>>例えば、7を選択し、label23.65の色は変わるのですが、次に10を選択すると、7で選択して変わったlabelの色はそのまま残り、10で選択したlabelの色がプラスされてしまいます。
>ついでなので、参考までにサンプルを、
>
>(オブジェクト名が"Label"で始まる全てのオブジェクトに対応)
>'*****標準モジュール*******************
>Public lc() As Long
>
>Sub test()
>  UserForm1.Show
>End Sub
>
>'*****ユーザーフォームモジュール*******************
>Private Sub UserForm_Initialize()
>  Dim i As Long
>  Dim j As Long
>  j = 0
>  For i = 0 To Me.Controls.Count - 1
>    If Left(Me.Controls(i).Name, 5) = "Label" Then
>      ReDim Preserve lc(2, j)
>      lc(1, j) = i
>      lc(2, j) = Me.Controls(i).BackColor
>      j = j + 1
>    End If
>  Next i
>  ComboBox1.AddItem 0
>  ComboBox1.AddItem 1
>  ComboBox1.AddItem 2
>  ComboBox1.AddItem 3
>End Sub
>
>Private Sub ComboBox1_Change()
>  Call defcol
>  Select Case ComboBox1
>    Case 1
>      Label1.BackColor = &HC0C0FF
>      Label2.BackColor = &HC0C0FF
>    Case 2
>      Label3.BackColor = &HC0C0FF
>      Label4.BackColor = &HC0C0FF
>    Case 3
>      Label5.BackColor = &HC0C0FF
>      Label6.BackColor = &HC0C0FF
>  End Select
>End Sub
>
>Private Function defcol()
>  Dim i As Long
>  For i = LBound(lc, 2) To UBound(lc, 2)
>    Me.Controls(lc(1, i)).BackColor = lc(2, i)
>  Next i
>End Function


ありがとうございました。確かにおっしゃる通りだと思います・・・。
以後気をつけます。

7283 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free