- ベストアンサー
エクセルVBAでオプションボタンのセル内配置
エクセル2000です。 シート上に「フォーム」のオプションボタンを配置する際、自動記録を取ると ActiveSheet.OptionButtons.Add(2.25, 2.25, 48, 16.5).Select のように、座標表示になりますが、これを仮に、A1セルやA2セルに配置したい場合、(行の高さ等はシートにより異なるものとします・・・つまり座標が使えない場合)どのような記述になるのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> できればセレクトしないでやりたいのですが・・・・。 では、セルの位置に合わせる方法を Sub test01() For n = 1 To 10 mlft = Cells(n, 1).Left mtp = Cells(n, 1).Top Set opt = ActiveSheet.OptionButtons.Add(mlft, mtp, 48, 16.5) opt.Name = "Opt" & n opt.Characters.Text = "Opt" & n Next n End Sub
その他の回答 (4)
- WWolf
- ベストアンサー率26% (51/192)
言い忘れましたが、オプションボタンを付けたフォームを作ってしたほうが簡単で融通もききやすいしロジックも簡素で応用もやりやすいですよ。
お礼
ありがとうございます。
- WWolf
- ベストアンサー率26% (51/192)
シート1のコードに下記を貼り付けしてみてください。 ベタベタですが、取り合えずこんな感じですか? Public OpNa1, OpNa2, OpVa1, OpVa2, OlRow Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ItRow, It1Row, ItCol, Ans s = Target.Address If Target.Column = 1 Then If OpNa1 <> "" Then ActiveSheet.Shapes(OpNa1).Select OpVa1 = Selection.Value ActiveSheet.Shapes(OpNa2).Select OpVa2 = Selection.Value End If a = Target.Row a1 = a + 1 b = 4 'D列 For i = 1 To a - 1 ItRow = ItRow + Cells(i, 1).Height Next For i = 1 To a1 - 1 It1Row = It1Row + Cells(i, 1).Height Next For i = 1 To b - 1 ItCol = ItCol + Cells(1, i).Width Next If OlRow <> a And OpVa1 < 0 And OpVa2 < 0 Then ActiveSheet.Shapes(OpNa1).Delete ActiveSheet.Shapes(OpNa2).Delete End If If OpNa1 <> "" Then If OpVa1 = 1 Or OpVa2 = 1 Then If OpVa1 = 1 Then Ans = "Yes" Else Ans = "No" End If Cells(OlRow, 4).Value = Ans ActiveSheet.Shapes(OpNa1).Delete ActiveSheet.Shapes(OpNa2).Delete End If End If ActiveSheet.OptionButtons.Add(ItCol, ItRow, 48, 16.5).Select OpNa1 = Selection.Name ActiveSheet.OptionButtons.Add(ItCol, It1Row, 48, 16.5).Select OpNa2 = Selection.Name Range(s).Select End If ActiveSheet.Shapes(OpNa1).Select OpVa1 = Selection.Value ActiveSheet.Shapes(OpNa2).Select OpVa2 = Selection.Value Range(s).Select OlRow = a End Sub
お礼
ありがとうございます。 わたしには高度すぎて・・・ 勉強します。
- WWolf
- ベストアンサー率26% (51/192)
オプションボタンを配置させる理由になんらかの座標が存在するはずですから、例えばA列の3(A3)がアクティブになればC3にオプションボタンをつけるなど・・・ そのようなイメージで補足お願いします。 これが分れば質問者さんの思いの通りのロジックが回答できるとおもいますので。
お礼
ありがとうございます。 やりたいことはこういうことなんです。 A列のセルに設問を入れます。 D列がYes、Noのオプションボタンとなります。 仮に設問のあるA5をクリックしたら、D5とD6にオプションボタンがふたつともOFFの状態で出現します。 D5をYES、D6をNoとします。 この二つをグループボックスで囲みます。 どちらかを選ぶと、D5に「Yes」または「No」が表示され、ボタンは消え、次にA8セルに質問が浮かび上がり、D8とD6にオプションボタンがふたつともOFFの状態で出現します。 以下、10回ほど繰り返します。
- hogehage
- ベストアンサー率50% (54/107)
自分の場合は、こうしています。 1.ActiveSheet.OptionButtons.Add(0, 0, 48, 16.5).Select 2.Selection.Cut 3.Range("D7").Select ActiveSheet.Paste 1.とりあえず、一番上の左に配置して 2.切り取って 3.貼り付け では、どうでしょうか?
お礼
なるほど、セルをセレクトして貼り付けるのですね。ありがとうございます。 ただ、できればセレクトしないでやりたいのですが・・・・。
お礼
ありがとうございます。 やってみました。 面白いですね! なるほど、 mlft = Cells(n, 1).Left mtp = Cells(n, 1).Top こうやってセルの座標が取得できるんですね。勉強になりました。