申込書をエクセルで作成しています。
ひとつのシートの中に、いくつものグループに分けて
オプションボタンを作りたいのですが、今ひとつ
グルーピングの方法がわかりません。
グループボックスを使ってグルーピングしているつもりでも、
いつのまにか、他のグループとくっついてしまいます。
どうやったら、きれいにオプションボックスのグループを
分けることができるのでしょうか?
教えてください。

A 回答 (1件)

こんにちは。

maruru01です。
オプションボタンのプロパティに「GroupName」というプロパティがあり、これに同じ名前を設定すると、グループ化されます。
つまり、同じGroupNameを持つオプションボタンの中で1つだけ選択出来るというわけです。
他に、フレームコントロールを置いてその中に1つのグループになるオプションボタンを置けばグループ化出来ますが、コントロールを置くと容量を食うので、上記のGroupNameプロパティを利用する方法の方がよいと思います。
では。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
で、早速やってみようと思ったのですが、
オプションボタンの右クリックのプロパティには
「GroupName」というプロパティが見当たりません。。
どうやったら設定できるのでしょうか?
教えてください。お願いします。

お礼日時:2001/10/10 09:48

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

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

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

Qjavascriptのstyleプロパティ

javascriptに、styleプロパティがあると思います。

そのstyleの中に、borderStyleプロパティや、color等のプロパティがたくさんあると思いますが、

(1).ケース1
styleプロパティのcolorプロパティ。
styleプロパティのborderStyleプロパティ。

という言い方をしたほうがいいのか、

(2)ケース2
style.colorプロパティ。
style.borderStyleプロパティ。

という言い方をしたほうがいいのか。

どちら言い方が正しいのか気になってしまいました。
ご教授ねがえませんでしょうか。

よろしくお願いします。

Aベストアンサー

どちらでも良いと思いますが、正しいのはどちらかと聞かれれば、(1) ですね。

xxxxプロパティのxxxxプロパティのxxxxプロパティのxxxxプロパティのxxxxプロパティのxxxxプロパティ

とかになるとうるさいので、略記した方が良いのでは?

Qエクセルのグループボックス枠線を消す、ボックス数

オプションボタンの枠線を消す、グループ数についての質問です。

イミディエイト ウインドウにて、
ActiveSheet.GroupBoxes.Visible = Faulse
の記入で枠線を非表示にすることが確認できていますが、、、、、

YesNoの二択の質問が多く72あります。
各々YesとNoのオプションボタンをグループ化して、最後に
「ActiveSheet.GroupBoxes.Visible = Faulse」を入力しましたが
エラー1004でした。一つずつグループを消していき、61個になった時点で
消すことが出来ました。

数量に限度があるのでしょうか。また回避する方法があれば教えてください。
よろしくお願いいたします。

Aベストアンサー

回答したとおりに行っていただければよいだけのことなのですが,それとも一体「何が」変わらないのですか?



二度も同じ事をお話ししたくは無いのですが,デキナイという事なので手順の説明をもう一度繰り返します。


>ちなみにイミディエイトウィンドウに
Ctrl+Gでイミディエイトウィンドウを出します。
しかしイミディエイトウィンドウを出す事は既に出来ているはずです。


>for each o in activesheet.checkboxes : o.visible = false : next
イミディエイトウィンドウにこの一行を記入します
「ActiveSheet.GroupBoxes.Visible = False」を記入するなんて事はお話ししていません。


>と記入してEnterすることで,回避できます。
上述を記入しEnterすることで実行します。
しかしこの手順も既に「ActiveSheet.GroupBoxes.Visible = False」を記入しEnterして実行できたことで,出来ているはずです。




#それともこういうことを言ってるのですか?

この手順を実行することで「ActiveSheet.GroupBoxes.Visible = Falseでエラーになるのを回避できる」という事をお話ししているのではありません。
この手順を実行することで,あなたが行った手順で発生したエラーを起こさずに,グループボックスを全て非表示に出来ますとお話ししています。

回答したとおりに行っていただければよいだけのことなのですが,それとも一体「何が」変わらないのですか?



二度も同じ事をお話ししたくは無いのですが,デキナイという事なので手順の説明をもう一度繰り返します。


>ちなみにイミディエイトウィンドウに
Ctrl+Gでイミディエイトウィンドウを出します。
しかしイミディエイトウィンドウを出す事は既に出来ているはずです。


>for each o in activesheet.checkboxes : o.visible = false : next
イミディエイトウィンドウにこの一行を記入します
「ActiveSh...続きを読む

Qフォルダのプロパティが表示されない

表題の「フォルダのプロパティが表示されない」
フォルダを右クリックすると「開くからプロパティ」
迄が表示されます、プロパティを右クリックしても
フォルダのプロパティが表示されません。
最近まで表示されて居たのですが、出来なくなりました。
フォルダの中のファイルはプロパティが表示されます
表示出来る様に設定方法をご指導頂きたく、宜しく
お願いいたします。

Aベストアンサー

>プロパティを右クリックしても

左クリックでは駄目ですか?
通常は左だと思いますが。

Q続)ユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果保存

 以前に,エクセルファイルを閉じても,再度ファイルを開いたときに,閉じる前のユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果を再表示させる方法をお教えいただき,そのご指導のもとコントロールの状態を、シートに保存しておく方法で作業を進めていました。
しかし,次の2点の問題が新たに出てきました(><)。いろいろと自分なりに考えて見ましたが,解決できず再度投稿させていただきました。
問題1.ユーザーフォームに「ラベル」・「イメージ」・「マルチページ」等があると,エラーが発生します。
問題2.「コンボボックス」は,保存したコントロール状態は再表示するのですが,リストを読み込まず,コンボボックスでほかのものが選択できない事になってしまいます。

大変、恐縮なのですが、どなたか解決策をお教えください。
何卒、よろしくお願いいたします。

例)UserForm1にチェックボックス、オプションボタン、トグルボタン、テキストボックス、「ラベル」・「イメージ」・「マルチページ」「コンボボックス」を作る。SHEET2のセル(E1:E5)にコンボボックスのリストを作る。こうしたユーザーフォームの結果をフォームを閉じる時にシート(dataという名前をつけています)に保存し、フォームを開く時に、値を読み込みこませるようにしました。(、「ラベル」・「イメージ」・「マルチページ」「コンボボックス」を省くと以下のコードで問題なく作動します。)

'☆標準モジュール
Sub test()
UserForm1.Show
UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value
End Sub

'☆ UserForm1のモジュール
Private Sub UserForm_Initialize()
Dim srcRange As Range
Dim myCell As Range

Set srcRange = ThisWorkbook.Sheets("data").Range("A1").CurrentRegion
For Each myCell In srcRange.Columns(1).Cells
Me.Controls(myCell.Value).Value = myCell.Offset(0, 1).Value
Next myCell
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim myCtrl As Control
Dim destRange As Range

Set destRange = ThisWorkbook.Sheets("data").Range("A1")
destRange.Parent.Cells.Clear
For Each myCtrl In Me.Controls
With destRange
.Value = myCtrl.Name
.Offset(0, 1).Value = myCtrl.Object.Value
End With
Set destRange = destRange.Offset(1, 0)
Next myCtrl
End Sub

 以前に,エクセルファイルを閉じても,再度ファイルを開いたときに,閉じる前のユーザーフォームにあるチェックボックスやオプションボタンなどの選択結果を再表示させる方法をお教えいただき,そのご指導のもとコントロールの状態を、シートに保存しておく方法で作業を進めていました。
しかし,次の2点の問題が新たに出てきました(><)。いろいろと自分なりに考えて見ましたが,解決できず再度投稿させていただきました。
問題1.ユーザーフォームに「ラベル」・「イメージ」・「マルチページ」等があ...続きを読む

Aベストアンサー

回答がついてないようなので。。。(^^;;;

----------------------------------------------------
>問題2.「コンボボックス」は,保存したコントロール状態は
再表示するのですが,リストを読み込まず
  >Sub test()
  >UserForm1.Show
  >UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value
  >End Sub

これではリストを読み込むことはできません。
>UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value

これは、UserForm_Initializeイベントのところに書かないといけません。
 
--------------------------------------------------------

>問題1.ユーザーフォームに「ラベル」・「イメージ」・「マルチページ」等があると,エラーが発生します。
>「ラベル」・「イメージ」・「マルチページ」「コンボボックス」を
省くと以下のコードで問題なく作動します
>UserForm1にチェックボックス、オプションボタン、トグルボタン
テキストボックス、「ラベル」・「イメージ」・「マルチページ」「コンボボックス」

何でもかんでもVALUEプロパティを使えばいいというものではありません。
「ラベル」・「イメージ」には、VALUEプロパティがありませんよね。
だから、エラーが出るわけです。


------------------------------------------------------------

コントロールの何を保存したいのかによって
使用するプロパティなどが変るわけですから、
コントロールを●区別●する必要があるわけです。

例えば、
ラベルに表示されている文字列を保存したければ
  Captionプロパティを使用
チェックボックスのOn,Offを保存したければ
  Valueプロパティを使用

以上です。
 

回答がついてないようなので。。。(^^;;;

----------------------------------------------------
>問題2.「コンボボックス」は,保存したコントロール状態は
再表示するのですが,リストを読み込まず
  >Sub test()
  >UserForm1.Show
  >UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value
  >End Sub

これではリストを読み込むことはできません。
>UserForm1.ComboBox1.List = Sheets("sheet2").range("E1:E5").Value

これは、UserForm_Initializeイベント...続きを読む

Qプロパティシートのタブの名前を変えるには

VC2005 MFC にてMDIアプリケーションを開発しています。

プロパティシートがメインとなるアプリケーションなのですが、追加するプロパティページの名前をファイルから読み取ってユーザーが自由に変えられるようにしたいと思っています。

標準ですと、プロパティシートにAddPage()にてプロパティページを追加するとシートのタブ部分にはプロパティページのキャプションが使われるようです。

キャプションを一切無視してファイルから取得した文字列をタブ部分に表示したいのですが、やり方がわかりません。

SetWindowText()をプロパティページの中で使ってもアプリケーションエラーが起こったり、全く変化がなかったりです。
CPropertySheet::SetTitle() はプロパティページ自信の名前を変えるものでしょうか。どうも違うようです。

GetMessageString()のような関数でオーバーライドできるかと探したのですが、ないようでした。

どなたかお知恵を拝借させてください。

Aベストアンサー

 こんばんは。御礼頂きました。

 モーダルプロパティーシートの方ですか。確かにタイミングが合わないですねえ・・・。
 CPropertyPageの派生クラスを作成して、OnInitDialog()をオーバーライドした所、GetTabControl()に間に合いました。
 因みにオーバーライドするのは、「Bのプロパティページ」(モーダルで開いている方)です。

/////////////////////////////////////////////////////////////////////////////
// CMyPage メッセージ ハンドラ

BOOL CMyPage::OnInitDialog()
{
BOOL bResult = CPropertyPage::OnInitDialog();

// TODO: この位置に固有のコードを追加してください

//親がプロパティーシート
CPropertySheet* pSheet = static_cast<CPropertySheet*>(this->GetParent());

//タブコントロールを取る
CTabCtrl* pTab= pSheet->GetTabControl();

//前回通り
TCITEM tabCtrlItem= {TCIF_TEXT};
tabCtrlItem.pszText= _TEXT("新しい名前");
tabCtrlItem.cchTextMax = ::_tcsclen(tabCtrlItem.pszText);

pTab->SetItem(pSheet->GetActiveIndex()/*チョッとココが怪しいかも*/, &tabCtrlItem);

return bResult;
}

 こんばんは。御礼頂きました。

 モーダルプロパティーシートの方ですか。確かにタイミングが合わないですねえ・・・。
 CPropertyPageの派生クラスを作成して、OnInitDialog()をオーバーライドした所、GetTabControl()に間に合いました。
 因みにオーバーライドするのは、「Bのプロパティページ」(モーダルで開いている方)です。

/////////////////////////////////////////////////////////////////////////////
// CMyPage メッセージ ハンドラ

BOOL CMyPage::OnInitDialog()
{
BOOL bRes...続きを読む

Qエクセルでグループ分け

お知恵を貸してくださいよろしくお願いします。

A:グループ名 B:性別 C:名前

が100人分横で入っています。

それを、グループごとに分けて、縦の一覧にしたいのです。

  A B C
1 A 男 佐藤
2 C 女 山田
3 B 女 田中
4 A 女 鈴木

  ↓(別シートに)

  Aグループ   Bグループ   Cグループ
1 男 佐藤    女 田中    女 山田
2 女 鈴木




このように抽出して、並び替えることを関数をつかってできないでしょうか。よろしくご教示ください。

Aベストアンサー

◆Sheet2のA2の式
A2=IF(ROW(A1)>COUNTIF(Sheet1!$A$1:$A$10,A$1),"",INDEX(Sheet1!$B$1:$B$10&" "&Sheet1!$C$1:$C$10,SMALL(INDEX((Sheet1!$A$1:$A$10<>A$1)*100+ROW($A$1:$A$10),),ROW(A1))))
★右と下にコピー

◆Sheet1のグループ名は、Sheet1のB列の表示と同じにしてください(大文字、小文字の区分に注意)
◆なお、「Aグループ」のように表示したければ、表示形式をユーザー定義で、 @"グループ" としてください

Qconstructorプロパティとオブジェクト関係

JavaScriptのconstructorプロパティについて教えてください。

・constructorプロパティは、内部プロパティ[[Construct]]と同義でしょうか?

・constructorプロパティが存在しない組込オブエジェクトは、「Global」「Math」「JSON」の三つだけ?

・上記以外の組込オブエジェクトは、全てnewできる、ということでしょうか?

・「new Object」「new Function」できるのは、constructorプロパティがあるから、という理解で合っているでしょうか?

Aベストアンサー

[[Construct]]はnewでのインスタンスを作成する為の内部関数です
constructorプロパティとは関係ありません

Qエクセルでグループ分け

エクセルでセルB1~B30に30名の名前を入力してます。ランラムに分けてグループNo.1~グループNo.30グループ名をセルC1~C30に書きたいのですがどうすればよいでしょうか?
ご存知の方、教えてください。

Aベストアンサー

>グループNo.1~グループNo.30グループ名をセルC1~C30に書きたい

D1セルに
=RAND()
と記入し、D30セルまでコピー貼り付ける

C1セルに
="グループNo."&RANK(D1,D:D)
と記入し、C30セルまでコピー貼り付ける



#D列を汚したくなければ、どこか目立たないZ列でもシート2でもどこに追いやっても構いません。

QVBA Worksheetsはプロパティなの?

(株)C&R研究所発行 Excel VBA逆引きハンドブック 著者 蒲生睦男 234ページを引用します。

-----
ワークシートを参照するには「Worksheets」プロパティを使います。「Worksheets」プロパティは、指定されたブックのすべてのワークシートを表す「Sheets」コレクションを返します。
-----

私は今までWorksheetsはコレクションだと思ってました。つまりワークシートの集合であると。違うのですか?さらにプロパティはオブジェクトの性質を表わすもので、例えばCellのプロパティであればValue, Colour等です。では、Worksheetsは何のプロパティなのでしょうか?Workbookのプロパティですか?もしそうなら、他にはどんなプロパティがあるのですか?さらに上記引用で「返す」とありますが、返すってなんですか?ファンクションプロシージャの戻り値を返す、みたいな表現はありますがここでの「返す」の意味がよくわかりません。

私の現状認識は以下のものです。どこか誤ってますか?
Worksheetsはワークシートの集合体つまりコレクションであり、ワークシートオブジェクトでもある。オブジェクトであるので、性質を表わすプロパティではない。

VBAの構文で
Workbook.Worksheet.Range
のような表現はよく使いますが、ひょっとして後ろにくっつくのは全部プロパティなのですか?ちょっとよくわかりません。

(株)C&R研究所発行 Excel VBA逆引きハンドブック 著者 蒲生睦男 234ページを引用します。

-----
ワークシートを参照するには「Worksheets」プロパティを使います。「Worksheets」プロパティは、指定されたブックのすべてのワークシートを表す「Sheets」コレクションを返します。
-----

私は今までWorksheetsはコレクションだと思ってました。つまりワークシートの集合であると。違うのですか?さらにプロパティはオブジェクトの性質を表わすもので、例えばCellのプロパティであればValue, Colour...続きを読む

Aベストアンサー

#1の回答者です。

オブジェクトとプロパティというのは、プログラミングの基本的概念で、他の概念を同等に持ちだしてきたら、ワケが分からなくなります。

> worksheetをプロパティとして使うのはどのようにするのでしょうか?
プロパティとは、操作してどうこうしようと思っているようですが、そういうことではありません。これは定議の話であって、個々の設定やら値の取得の話は別問題です。

Workbook.Worksheets(1).Range("A1")
少なくとも、Workbookの配下に、Worksheet はありません。Worksheets という入れ物が存在しているのです。その入れ物の中の個別に指定しないと、それを取り出すことはできません。

その入れ物を、あえて「Worksheetsコレクション」と称することは間違いありませんが、コレクション(Collection)というものは、複数のオブジェクトをひとまとめにしたもので、ここでは、単なる名称にしかすぎません。単に、そういう入れ物を作ったということでしょう。

私の記憶に間違いなければ、プログラミングの構造からすると、まず、クラスがあって、それを実体化させたものがインスタンスです。それをオブジェクトと呼びます。そして、その中で、いくつか必要な性質を持たせます。それをプロパティと呼びます。プロパティの本質は、あくまでも、オブジェクトの「性質・属性」を示すものです。そのプロパティが、どういうものかは、それぞれの個別の問題です。

ここで、メソッドを持ちだしてきて、「こうすれば、プロパテイは値を取り出せたり、値が変わります」という機能を言っても、それは個別の例であって、それはまったく別の話です。

前回と重複しますが、プロパティとは、クラスの中で設定されたものです。その値を変更したり、値を取るという機能自体は、制作者が、そう設定されたものだということです。絶対的なものとしては存在しているわけではありません。

私は、別に混乱させるために書いているわけではありませんが、#1の回答で満足しなくても、もうこれ以上書く必要はないと思います。

失礼かもしれませんが、今まで書いたものを見させていただいて、経験的に、そのレベルの人で、用語の定義にこだわる人が上達したという覚えがありません。あれこれ考えるよりも、上級レベルに達するまで、こういう話は保留にしておいたほうがよいのではないかとアドバイスいたします。

いつか、私の話が分かる日が来ると思います。
それでは、これで失礼いたします。„

#1の回答者です。

オブジェクトとプロパティというのは、プログラミングの基本的概念で、他の概念を同等に持ちだしてきたら、ワケが分からなくなります。

> worksheetをプロパティとして使うのはどのようにするのでしょうか?
プロパティとは、操作してどうこうしようと思っているようですが、そういうことではありません。これは定議の話であって、個々の設定やら値の取得の話は別問題です。

Workbook.Worksheets(1).Range("A1")
少なくとも、Workbookの配下に、Worksheet はありません。Worksheets という入...続きを読む

Qエクセルでグループ分け。

 よろしくお願いします。
データー
   A      B     C     D
1 1/1    20   19    50
2 1/2    65   55    89
3 1/3    88   80    89
4 1/7    25   02    80
5 1/8    44   13    99
6 1/10   93   23    95
7 1/14   12   -2    46
8 1/15   23   11    45

 というデーターがあります。
このデーターのB列の数字を基準にし、C列の数字とD列の数字の二つを比べ、C列の数字と近い場合とD列の数字と近い場合のデーターを抜き出せるようにしたいと思います。
 B列の数字がC列の数字と近い場合の結果
   A      B     C     D
1 1/1    20   19    50
2 1/7    25   02    80
3 1/8    44   13    99
4 1/14   12   -2    46
5 1/15   23   11    45

 B列の数字がD列の数字と近い場合の結果
1 1/2    65   55    68
2 1/3    88   80    89
3 1/10   93   23    95


 できる方、よろしくお願いします。

 よろしくお願いします。
データー
   A      B     C     D
1 1/1    20   19    50
2 1/2    65   55    89
3 1/3    88   80    89
4 1/7    25   02    80
5 1/8    44   13    99
6 1/10   93   23    95
7 1/14   12   -2    46
8 1/15   23   11    45

 というデーターがあります...続きを読む

Aベストアンサー

#4です。
>基本的にはANo.2と同じ解決方法ですね
違います。ABSの利用が売りのつもりです。


人気Q&Aランキング