• ベストアンサー

エクセルVBAでオプションボタンのセル内配置

エクセル2000です。 シート上に「フォーム」のオプションボタンを配置する際、自動記録を取ると ActiveSheet.OptionButtons.Add(2.25, 2.25, 48, 16.5).Select のように、座標表示になりますが、これを仮に、A1セルやA2セルに配置したい場合、(行の高さ等はシートにより異なるものとします・・・つまり座標が使えない場合)どのような記述になるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> できればセレクトしないでやりたいのですが・・・・。 では、セルの位置に合わせる方法を 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

error123
質問者

お礼

ありがとうございます。 やってみました。 面白いですね! なるほど、 mlft = Cells(n, 1).Left mtp = Cells(n, 1).Top こうやってセルの座標が取得できるんですね。勉強になりました。

その他の回答 (4)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.5

言い忘れましたが、オプションボタンを付けたフォームを作ってしたほうが簡単で融通もききやすいしロジックも簡素で応用もやりやすいですよ。

error123
質問者

お礼

ありがとうございます。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.4

シート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

error123
質問者

お礼

ありがとうございます。 わたしには高度すぎて・・・ 勉強します。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

オプションボタンを配置させる理由になんらかの座標が存在するはずですから、例えばA列の3(A3)がアクティブになればC3にオプションボタンをつけるなど・・・ そのようなイメージで補足お願いします。 これが分れば質問者さんの思いの通りのロジックが回答できるとおもいますので。

error123
質問者

お礼

ありがとうございます。 やりたいことはこういうことなんです。 A列のセルに設問を入れます。 D列がYes、Noのオプションボタンとなります。 仮に設問のあるA5をクリックしたら、D5とD6にオプションボタンがふたつともOFFの状態で出現します。 D5をYES、D6をNoとします。 この二つをグループボックスで囲みます。 どちらかを選ぶと、D5に「Yes」または「No」が表示され、ボタンは消え、次にA8セルに質問が浮かび上がり、D8とD6にオプションボタンがふたつともOFFの状態で出現します。 以下、10回ほど繰り返します。

  • hogehage
  • ベストアンサー率50% (54/107)
回答No.1

自分の場合は、こうしています。 1.ActiveSheet.OptionButtons.Add(0, 0, 48, 16.5).Select 2.Selection.Cut 3.Range("D7").Select  ActiveSheet.Paste 1.とりあえず、一番上の左に配置して 2.切り取って 3.貼り付け では、どうでしょうか?

error123
質問者

お礼

なるほど、セルをセレクトして貼り付けるのですね。ありがとうございます。 ただ、できればセレクトしないでやりたいのですが・・・・。

関連するQ&A

専門家に質問してみよう