プロが教えるわが家の防犯対策術!

エクセル2000です。

シート上に「フォーム」のオプションボタンを配置する際、自動記録を取ると

ActiveSheet.OptionButtons.Add(2.25, 2.25, 48, 16.5).Select

のように、座標表示になりますが、これを仮に、A1セルやA2セルに配置したい場合、(行の高さ等はシートにより異なるものとします・・・つまり座標が使えない場合)どのような記述になるのでしょうか?

A 回答 (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
    • good
    • 2
この回答へのお礼

ありがとうございます。

やってみました。
面白いですね!

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

お礼日時:2005/02/01 09:41

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

    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2005/02/01 09:43

シート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
    • good
    • 0
この回答へのお礼

ありがとうございます。

わたしには高度すぎて・・・
勉強します。

お礼日時:2005/02/01 09:39

オプションボタンを配置させる理由になんらかの座標が存在するはずですから、例えばA列の3(A3)がアクティブになればC3にオプションボタンをつけるなど・・・


そのようなイメージで補足お願いします。
これが分れば質問者さんの思いの通りのロジックが回答できるとおもいますので。
    • good
    • 0
この回答へのお礼

ありがとうございます。

やりたいことはこういうことなんです。
A列のセルに設問を入れます。
D列がYes、Noのオプションボタンとなります。

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

お礼日時:2005/01/31 18:30

自分の場合は、こうしています。



1.ActiveSheet.OptionButtons.Add(0, 0, 48, 16.5).Select
2.Selection.Cut
3.Range("D7").Select
 ActiveSheet.Paste

1.とりあえず、一番上の左に配置して
2.切り取って
3.貼り付け


では、どうでしょうか?
    • good
    • 0
この回答へのお礼

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

ただ、できればセレクトしないでやりたいのですが・・・・。

お礼日時:2005/01/31 14:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!