仕事を頑張る人のおしりトラブル対策

excel2003を使用しています。

今sheet上にオプションボタンをを横一列に5つ作りました。
(1)オプションボタンを複数にチェックをいれたい。
(2)同じボタンを2回押すとチェックが外れる。

ように設定したいです。
VBAでも構いません。
急いでいます。知恵を貸してください。

A 回答 (1件)

>(1)オプションボタンを複数にチェックをいれたい。


>(2)同じボタンを2回押すとチェックが外れる。
オプションボタンじゃなくて、チェックボックスにすればいいんじゃないですか?
    • good
    • 4

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBA オプションボタンのチェックを外したい

いつもお世話になります。

エクセルで、ユーザーフォームでオプションボタンを使っているのですが、オプションボタンを選択し、ユーザーフォームを消して、もう一度表示させた時に、前に選択したオプションボタンの黒丸が残っている時があるのです。

ユーザーフォームを表示させた時に前に選択した黒丸を消す方法はありますでしょうか?

Aベストアンサー

こんにちは。

userformを消すとき、Me.Hideを使用してるとそうなります。
Unload Me ならなりません。

が、単純にUserformのActivateイベントを利用してもいいですね。

-----------------------------------------
Private Sub UserForm_Activate()
 OptionButton1.Value = 0
 OptionButton2.Value = 0
 OptionButton3.Value = 0
End Sub
-------------------------------------------

以上です。

QExcel ラジオボタンのリセットを作りたい

http://www3.plala.or.jp/hkyoji/javascript/javano6.htm
上記サイトのようなラジオボタンをEXCELで作りましたが、
リセットするボタンの作り方がわかりません。
調べてもWebでのことしかでてきません。
ご教授よろしくお願いします。

Aベストアンサー

こんばんは。

通常では、ラジオボタン(Excelでは、オプションボタン)のリセットはしません。それは、必ず、ひとつが必ず「オン」 になるようになっているからです。あえて作るなら以下のようになります。


Private Sub CommandButton1_Click()
 For Each cnt In ActiveSheet.OLEObjects
  If TypeOf cnt.Object Is MSForms.OptionButton Then
    cnt.Object.Value = False
  End If
 Next
End Sub

QエクセルVBAでOptionButtonのオンオフ取得

ワークシート上に貼り付けてあるオプションボタンの状態の取得ですが、フォームのオプションボタンなら
例えば、
MsgBox ActiveSheet.OptionButtons("Option Button 44").Value で、オンなら1、オフなら-4146が返ります。
またActiveSheet.OptionButtons("Option Button 44").Value=xlOnで オンに出来ます。

ところがフォームじゃないコントロールツールボックスのオプションボタンは
MsgBox ActiveSheet.Shapes("OptionButton30").Valueでも
MsgBox ActiveSheet.Controls("OptionButton30").Valueでもエラーになります。
どうやって取得すればいいのでしょうか?
どうやてOn Off を指示すればいいのでしょうか?

Aベストアンサー

同一ワークシート内にオプションボタン1つ、コマンドボタン一つを配置して、コマンドボタンに、現在のオプションボタンの値をMSGBOXで表示させ、その後OFF(False)にするようなサンプルを作って、Excel2000で試してみました。

Private Sub CommandButton1_Click()
MsgBox OptionButton1.Value
OptionButton1.Value= False
End Sub

というコードです。
とりわけ問題なく動作しました。
LinkCellを指定するかどうか、複数配置かどうかで微妙に動作が異なるようです。

参考までに。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QエクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

Aベストアンサー

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。

Q【Excel】ラジオボタンやチェックボックスの使い方

こんにちは
Excelのフォームを使って、セルにラジオボタンやチェックボックス、
ボタンなどを配置することができますが、形だけが配置されて、機能させることができません。

これらの使い方を教えてください。

ラジオボタンで選んだセルの内容を、別のセルに表示するといったことがやってみたいのですが、これでできますか。

Aベストアンサー

ラジオボタンの場合、
まず、グループを置いて
その上に複数のラジオボタンを置きます。
そして、その内の一つのラジオボタンの
コントロールの書式設定でリンクするセルを選ぶと
選んだラジオボタンによって数値がリンクしたセルに入ります。
その数値によって選ばれたラジオボタンが判るので、
そのセルの数値によって動作を変えるようにします。
例えば
3つのラジオボタンをセットして、それをR1にリンクさせたとします。
ラジオボタンの表示文字列は
A1,B1,C1
だとして、ラジオボタンをクリックするとD1にその選ばれたセルの内容を表示したいとします。
その場合
D1のセルに
=CHOOSE(R1,A1,B1,C1)
とすればいいです。
R1が1の時A1,2の時B1,3の時C1を選ぶという意味です。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qチェックボックスの箱のサイズとフォントサイズは変更できるの?

こんにちわ。

エクセル2000でチェックボックスを作成したのですが、
やや、小さいのでサイズを大きくしたいのです。
ボックスサイズ、ボックスの横に入れる文字の
フォントサイズは大きくできるのでしょうか?
もし、できるのなら方法を教えてください。

よろしくおねがいします。

Aベストアンサー

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセルにチェックボックスの説明のテキストを入れます。
 セルの書式設定でフォントが変更できます。
(2)チェックボックス(四角)をセルの境目などにセットする場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 図形描写からテキストボックスを選択し、チェックボックスの説明のテキストを入れます。
 テキストボックスは『線なし』にしておきます。2行で表示したりもできます。
 チェックボックスとテキストボックスを重ねて、見た目を調節します。
 テキストボックスを選択し、右クリック→順序→最背面へ移動 とします。

ご参考に。

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセ...続きを読む

QエクセルVBAマクロのオプションボタンについて

オプションボタンのマクロに関して教えて下さい。
マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。

「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。

色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。

Private Sub OptionButton1_Click()
オプション1 = True
End Sub
Private Sub OptionButton2_Click()
オプション2 = True
End Sub
Sub オプションボタン()
If オプション1 = True Then
Range("a1") = 1
ElseIf オプション2 = True Then
Range("a1") = 2
Else
Range("a1") = 0
End If
End Sub

作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。

ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。
ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。

オプションボタンのマクロに関して教えて下さい。
マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。

「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。

色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。

Private Sub OptionButton1_Click()
オプション1 = True
End Sub
Pri...続きを読む

Aベストアンサー

こんばんは。

出来れば、そろそろコントロールツール側のコントロールをお使いになってください。

今から、フォーム(ダイアログシートを含む)を勉強しようとしても、資料も手に入らないでしょうし、今は、隠しオブジェクトになってしまいましたので、インテリセンスが利きません。フォームのコントロールは、コントロール配列の真似事が出来ますので便利ですが、少し、その分、深く勉強しないと難しいのです。(Ver.5のマニュアルには詳しく出ています)

それと、オプション1_Click 等は、右クリックで自動記録で出来ますので、それは手をつけませんが、一応、「Sub オプションボタン()」の2バイト文字の名称は、ユーザーが作成するプロシージャなので、なるべくアルファベットでつけてください。

なお、コントロールの名称は間違ってませんが、マクロで操作するには、私には、どうも曖昧さが残るような気がします。

それと、フォームのオプションボタンの戻り値は、1 と0で、True / False ではありません。今回は、組み込み定数を使いました。(xlOn)

この説明は、少し難しいかもしれませんね。

'標準モジュール

Sub OptionButtonsMcr()
'シート名は必ず入れます。
With Worksheets("Sheet1")
If .OptionButtons("Option Button 1").Value = xlOn Then
 .Range("a1").Value = 1
ElseIf .OptionButtons("Option Button 2").Value = xlOn Then
 .Range("a1").Value = 2
Else
 .Range("a1").Value = 0
End If
End With
End Sub

Sub オプション1_Click()
 Call OptionButtonsMcr
End Sub
Sub オプション2_Click()
 Call OptionButtonsMcr
End Sub

なお、Index を使った、もっと簡単な方法もありますが、逆に、その考え方は自体は難しくなります。すべて以下のマクロに登録すればよいです。Sub オプション1_Click() 等の個別のマクロは必要ありません。

'補足(Index を使った方法)
'---------------------------
Sub OptionbuttonsMcr()
Dim i As Integer
With Worksheets("Sheet1")
 i = .OptionButtons(Application.Caller).Index
 If i < 3 Then
  .Range("a1").Value = i
 Else
  .Range("a1").Value = 0
 End If
End With
End Sub

こんばんは。

出来れば、そろそろコントロールツール側のコントロールをお使いになってください。

今から、フォーム(ダイアログシートを含む)を勉強しようとしても、資料も手に入らないでしょうし、今は、隠しオブジェクトになってしまいましたので、インテリセンスが利きません。フォームのコントロールは、コントロール配列の真似事が出来ますので便利ですが、少し、その分、深く勉強しないと難しいのです。(Ver.5のマニュアルには詳しく出ています)

それと、オプション1_Click 等は、右クリックで自...続きを読む

Q[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。

VBAで指定列からAを検索し、発見したら隣のセルに0を入れるマクロを組みたいのですが、組み方がVBA初心者の為わかりません。
(例)
L列に、A、B、C、D、E、Fとランダムに文字が入っていて、
文字Aを検索し、発見したら隣のI列に値0を入れるというマクロです。

Sub Search()
Dim A As String
Set A = Worksheets("Sheet1").Cells.Find("A")
If A Is Nothing Then
ActiveCell.Offset(0, 1).Value = 0

End If
End Sub
と過去の質問で考えてみたのですが、Aがあった時、、、、
とコードが書けないです。
大変困っているので、ご教授頂けないでしょうか?
出来れば、そのままマクロに出来るコードを教えて頂けないでしょうか?
宜しくお願い致します。

Aベストアンサー

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表格が、この「Find」 です。

>Set A = Worksheets("Sheet1").Cells.Find("A")

>過去の質問で考えてみたのです

どうも、Find メソッドは、あるレベル以下の人は、省略する傾向があるようです。何が大事で、何が大事でないかというのは、やってみなければ分かりませんが、検索語だけを入れる書き方は、実務では、あまりしないほうがよいと思います。

だいたい、以下のTestFind2 ぐらいまでに、省略は、とどめたほうがよいです。

それは、Find は、必ずしも自分が思っているデフォルトとは違うことがあるので、「明示的(意図的に)」にオプションは入れたほうがよいです。
例えば、大文字小文字の違いを付けるなら、MatchCase:=True, 数式まで探すなら、LookIn:=xlFormulas

なお、Find メソッドは、5年経っても、たぶん完全に覚えられません。面倒なコードのひとつです。ですが、これはパターンが決まっているので、ひとつパターンが決まったら、それに当てはめればよいだけです。

#3さんで示されているMougのサンプルコードと似てはいるのですが、Mougのサンプルコードでは、Verionによって、失敗することがあります。

'--------------------------------------
'記録マクロをそのまま使う方法
Sub TestFind1()
Dim c As Range
 Set c = Columns("L:L").Find(What:="A", _
           After:=ActiveCell, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           SearchOrder:=xlByRows, _
           SearchDirection:=xlNext, _
           MatchCase:=False, _
           MatchByte:=False, _
           SearchFormat:=False)
 c.Offset(0, 1).Value = 0
End Sub
'--------------------------------------
'TestFind1 をアレンジしてみる
Sub TestFind2()
Dim c As Range
'検索語
Const MYTXT As String = "A"
 Set c = ActiveSheet.Columns("L:L").Find(What:=MYTXT, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           MatchCase:=False)
 If Not c Is Nothing Then
    c.Offset(0, 1).Value = 0
 End If
End Sub

'---------------------------------------
'複数ある場合(パターンを使った方法)
'---------------------------------------
Sub TestFind3()
  Dim c As Range
  Dim FirstAdd As String
  Const MYTXT As String = "A"
  Set c = ActiveSheet.Columns("L:L").Find( _
    What:=MYTXT, _
    LookIn:=xlValues, _
    LookAt:=xlPart, _
    MatchCase:=False)
  
  If Not c Is Nothing Then
    FirstAdd = c.Address
    Do
      c.Offset(, 1).Value = 0
      Set c = ActiveSheet.Columns("L:L").FindNext(c)
      If c.Address = FirstAdd Then Exit Sub
    Loop Until c Is Nothing
  End If
End Sub

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報