Excel VBA質問箱 IV

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

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


13060 / 13644 ツリー ←次へ | 前へ→

【7217】オプションボタン 鼻毛カッター 03/8/27(水) 0:34 質問
【7219】Re:オプションボタン ichinose 03/8/27(水) 8:06 回答
【7224】Re:オプションボタン 鼻毛カッター 03/8/27(水) 9:37 発言
【7226】Re:オプションボタン INA 03/8/27(水) 10:25 回答
【7228】Re:オプションボタン ichinose 03/8/27(水) 10:39 回答
【7254】Re:オプションボタン 鼻毛カッター 03/8/27(水) 19:59 お礼

【7217】オプションボタン
質問  鼻毛カッター  - 03/8/27(水) 0:34 -

引用なし
パスワード
   教えていただきたいのですがよろしいでしょうか?
オプションボタンだけを使い、シート上にある項目に丸をつけようと思っているのですが、なかなか上手くいきません。
例をあげると、ボタン1の時は、アに丸をつけ、ボタン2の時は、イに丸をつけるというものです。ここまではできたのですが、アに丸をつけてから、イに丸をつけると、アについている丸が消えてくれません。片方に丸ついているときは、片方には丸がついていないようにしたいのですが、どのようにすればよろしいのでしょうか?
わかる方がいらしたら、よろしくお願い致します。

【7219】Re:オプションボタン
回答  ichinose  - 03/8/27(水) 8:06 -

引用なし
パスワード
   ▼鼻毛カッター さん:
おはようございます。HNがとてもユニークで・・・。

>教えていただきたいのですがよろしいでしょうか?
>オプションボタンだけを使い、シート上にある項目に丸をつけようと思っているのですが、なかなか上手くいきません。
シートに貼り付けるオプションボタンということですか?
そうだとしたら、「コントロールツールボックス」のそれと「フォーム」と二つあるので
どちらなのか明記してくださいね!!
「コントロールツールボックス」にあるオプションボタンだと思って記述します。

>例をあげると、ボタン1の時は、アに丸をつけ、ボタン2の時は、イに丸をつけるというものです。ここまではできたのですが、アに丸をつけてから、イに丸をつけると、アについている丸が消えてくれません。片方に丸ついているときは、片方には丸がついていないようにしたいのですが、どのようにすればよろしいのでしょうか?
>わかる方がいらしたら、よろしくお願い致します。
例えば、あるシート上にオプションボタンを3つ配置します(OptionButton1〜OptionButton3)。
OptionButton1が選択されたら、セルA1に○、
OptionButton2が選択されたら、セルA2に○、
OptionButton3が選択されたら、セルA3に○。
というような仕様を考えると、
当該シートに
'=========================================
Private Sub OptionButton1_Change()
  Call set_○(1)
End Sub
'=========================================
Private Sub OptionButton2_Change()
  Call set_○(2)
End Sub
'=========================================
Private Sub OptionButton3_Change()
  Call set_○(3)
End Sub
'=========================================
Sub set_○(id As Long)
  Range("a1:a3").Value = ""
  Cells(id, 1).Value = "○"
End Sub
なんてすると、○がセルA1からA3を移動するように見えます。

手法としては、例のように一旦○が動く範囲を初期化してしまう方法と
元の位置を示すポインタを持つ方法がありますが、
オプションボタンの数がすこぶる多い場合は、
後者の手法をとらなければならないかもしれません。
これで応用できますか?

【7224】Re:オプションボタン
発言  鼻毛カッター  - 03/8/27(水) 9:37 -

引用なし
パスワード
   ありがとうございます。
申し訳ないのですが、丸はオートシェイプを使おうを思っています。
使い方としましては、(有・無)がシート上にありまして、どちらかに丸をつけるというものになっています。今回が有でも、次回が無という場合がありますので、今回が有で、次回が無の時、有についている丸を消さなくていけません。その逆もあります。
申し訳ないですが宜しくお願い致します。

【7226】Re:オプションボタン
回答  INA  - 03/8/27(水) 10:25 -

引用なし
パスワード
   試してみて下さい。

Private Sub OptionButton1_Click()

Dim MyShape As Shape
  
  For Each MyShape In ActiveSheet.Shapes
    If MyShape.Type = msoAutoShape Then
      MyShape.Delete
    End If
  Next

ActiveSheet.Shapes.AddShape(msoShapeOval, OptionButton1.Left + 50, OptionButton1.Top - 25, 100#, 100).Select

End Sub

'−−−−−−−−−−−−−−−−−−−−−−−−−−−

Private Sub OptionButton2_Click()

Dim MyShape As Shape
  
  For Each MyShape In ActiveSheet.Shapes
    If MyShape.Type = msoAutoShape Then
      MyShape.Delete
    End If
  Next
  
ActiveSheet.Shapes.AddShape(msoShapeOval, OptionButton2.Left + 50, OptionButton2.Top - 25, 100#, 100).Select

End Sub

【7228】Re:オプションボタン
回答  ichinose  - 03/8/27(水) 10:39 -

引用なし
パスワード
   INA さん、鼻毛カッターさん、こんにちは。
解答がついているようですが、一応作成しました。
仮に
セルG5〜K5に"("、"有"、"・"、"無"、")"と
体裁よくセル幅を調整して入力されているとします。
○は、セルの大きさに合わせるようにしました。
オプションボタンは、ふたつ(OptionButton1とOptionButton2)。

当該シートモジュールに
'=====================================================
Dim shp1 As Shape
Dim shp2 As Shape
'==================================
Private Sub OptionButton1_Click()
  Call shp_delete
  Set shp1 = mk_○(Range("h5"))
End Sub
'==================================
Private Sub OptionButton2_Click()
  Call shp_delete
  Set shp2 = mk_○(Range("j5"))
End Sub
'==================================
Sub shp_delete()
  On Error Resume Next
  If Not shp1 Is Nothing Then
    shp1.Delete
    Set shp1 = Nothing
    End If
  If Not shp2 Is Nothing Then
    shp2.Delete
    Set shp2 = Nothing
    End If
  On Error GoTo 0
End Sub
'===================================
Function mk_○(rng As Range) As Shape
  Set mk_○ = rng.Parent.Shapes.AddShape(msoShapeOval, rng.Left, rng.Top, rng.Width, rng.Height)
  With mk_○
    .Fill.Visible = msoFalse
    End With
End Function

でどうでしょうか?

【7254】Re:オプションボタン
お礼  鼻毛カッター  - 03/8/27(水) 19:59 -

引用なし
パスワード
   みなさんどうもありがとうございました。思っていたとおりのことができました。今後もよろしくお願いいたします。ありがとうございました。

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