Excel VBA質問箱 IV

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

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


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

【70776】for next 飛び飛び クリスマス 11/12/29(木) 13:38 質問[未読]
【70777】Re:for next 飛び飛び UO3 11/12/29(木) 15:01 回答[未読]
【70778】Re:for next 飛び飛び UO3 11/12/29(木) 15:05 回答[未読]
【70779】Re:for next 飛び飛び クリスマス 11/12/29(木) 15:25 お礼[未読]

【70776】for next 飛び飛び
質問  クリスマス  - 11/12/29(木) 13:38 -

引用なし
パスワード
   for i= の部分が悪いみたいなのですが、どうしたらいいかわかりません。

Private Sub OptionButton1_Change()
Dim i As Long
 If OptionButton1.Value = True Then
   for i = 1 to 2 , 5 to 13 , 16 to 18
   Me.Controls("CommandButton" & i).Visible = False
   Next i
 Else
   for i = 1 to 2 , 5 to 13 , 16 to 18
   Me.Controls("CommandButton" & i).Visible = True
   Next i
 End If
End Sub

【70777】Re:for next 飛び飛び
回答  UO3  - 11/12/29(木) 15:01 -

引用なし
パスワード
   ▼クリスマス さん:

こんにちは
残念ながら、For 文では、このような「器用なこと」はできませんので
面倒でも、それぞれわける必要があります。
そのかわりといっちゃ、なんですが、True/Falseの設定を1つにまとめることができます。

Private Sub OptionButton1_Change()
  Dim i As Long
  
  For i = 1 To 2
    Me.Controls("CommandButton" & i).Visible = Not OptionButton1.Value
  Next i
  
  For i = 5 To 13
    Me.Controls("CommandButton" & i).Visible = Not OptionButton1.Value
  Next i
  
  For i = 18 To 18
    Me.Controls("CommandButton" & i).Visible = Not OptionButton1.Value
  Next i

End Sub

【70778】Re:for next 飛び飛び
回答  UO3  - 11/12/29(木) 15:05 -

引用なし
パスワード
   ▼クリスマス さん:

別案です。From/To の指定はできませんが、以下のようなことはできます。
お好み次第ですが。
( この構文では i は Variant型にしておく必要があります)

Private Sub OptionButton1_Change()
  Dim i As Variant
  
  For Each i In Array(1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18)
    Me.Controls("CommandButton" & i).Visible = Not OptionButton1.Value
  Next i
  

End Sub

【70779】Re:for next 飛び飛び
お礼  クリスマス  - 11/12/29(木) 15:25 -

引用なし
パスワード
   なるほど。皆様ありがとうございます。
勉強します。
arrayは考えていたのですが、not optionbuttonはまったく考えになかったので。
すべての皆様に感謝です。

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