昨日も質問させていただいたものです。
オプションボタンの使い方について質問があります。

コマンドボタン1つ、テキストボックスを1つ、ラベルを一つ、
フレームを二つ用意し、それぞれのフレームに3つずつオプションボタンを配置します(●フレームA、B●オプションA1、A2、A3、オプションB1、B2、B3とする)。
オプションA1~3には1~3年生というキャプションを、
オプションB1~3には1~3組というキャプションを設定します。
テキストに名前を打ちこんでコマンドボタンを押すと、
ラベルに(テキストが太郎の場合)"太郎は3年1組です"
と表示されるようなものを作ろうと考えています。

コマンドボタンを使用せずに、オプションボタンのみで作ると
Privat Sub OptionA1_Click()
If OptionB2.Valrue=True Then
Label1.Caption=""

と言うような感じで何個も書けば良いと思うのですが、
これにをコマンドボタンで実行させようとすると方法がわかりません。

アドバイスお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

とりあえず、基本的な命令で書くとこんなかんじになると思います。


Private Sub CommandButton1_Click()
Dim nen As String
Dim kumi As String
If TextBox1.Text = "" Then
MsgBox ("氏名が入力されてません")
Exit Sub
End If
If op1 = True Then
nen = "1年"
Else
If op2 = True Then
nen = "2年"
Else
If op3 = True Then
nen = "3年"
Else
MsgBox ("年が指定されていません")
Exit Sub
End If
End If
End If
If op4 = True Then
kumi = "1組"
Else
If op5 = True Then
kumi = "2組"
Else
If op6 = True Then
kumi = "3組"
Else
MsgBox ("組が指定されていません")
Exit Sub
End If
End If
End If
label1 = TextBox1.Text & "は" & nen & kumi & "です"
End Sub
    • good
    • 0
この回答へのお礼

レスありがとうございました。
初心者の私にもとてもわかりやすかったです。
これから一生懸命勉強します。
またよろしくお願いします。

お礼日時:2001/07/08 14:46

仕様ではオプションボタンを6つ必要ですが、そのボタン全てにOp1~Op6までの名前を付けていては大変です。


質問でも書いてあった通り、このままではコーディングの時、一つ一つのボタンについてのTrue/Falseの調査ロジックが必要です。なので、Op1とOp2で済むようにしましょう。

コントロールを配列にしてしまうのです。
オプションボタンのプロパティに[Index]っていうのがありますよね?それを使用します。
以下の処理を手順どおりにデザインで行ってください。

フレーム1の中で・・・
1.[Name]Option1を、[Index]を'0'にしてください。
2.[Name]Option2を、[Name]をOption1、[Index]を'1'にしてください。
3.[Name]Option3を、[Name]をOption1、[Index]を'2'にしてください。
[
フレーム2の中で・・・
4.[Name]Option4を、[Name]をOption2、[Index]を'0'にしてください。
5.[Name]Option5を、[Name]をOption2、[Index]を'1'にしてください。
6.[Name]Option6を、[Name]をOption2、[Index]を'2'にしてください。


できたら、それぞれのキャプションを設定してください。
7.[Name]Option1・[Index]0を、[Caption]を'1年生'
8.[Name]Option1・[Index]1を、[Caption]を'2年生'
9.[Name]Option1・[Index]2を、[Caption]を'3年生'
10.[Name]Option2・[Index]0を、[Caption]を'1組'
11.[Name]Option2・[Index]1を、[Caption]を'2組'
12.[Name]Option2・[Index]2を、[Caption]を'3組'

13.コマンドボタンを用意してください[Name]Command1

で次のプログラムを実行してみてください
Private Sub Command1_Click()
Dim wkGAKUNEN As String '学年
Dim wkKUMI As String '組

With Me
'フレーム1(学年)についての調査
wkGAKUNEN = getSelectOptionButtonCaption(.Option1)
If wkGAKUNEN = "" Then
MsgBox "学年が選択されてない"
Exit Sub
End If

'フレーム2(組)についての調査
wkKUMI = getSelectOptionButtonCaption(.Option2)
If wkKUMI = "" Then
MsgBox "組が選択されてない"
Exit Sub
End If

'イミディエイトウィンドウへ出力
Debug.Print wkGAKUNEN & ":" & wkKUMI
End With
End Sub

'【機能】コントロール配列のオプションボタンの中で選択されているボタンのキャプションを得る
'【注意】制限として、オプションボタンはコントロール配列(インデックスを持つコントロール)であること
Private Function getSelectOptionButtonCaption(inOptionButton As Object) As String
Dim OpBtn As OptionButton

For Each OpBtn In inOptionButton
If OpBtn Then
'もし選択されていたら、その学年を記憶しループを抜ける
getSelectOptionButtonCaption = OpBtn.Caption
Exit For
End If
Next OpBtn

End Function
    • good
    • 0
この回答へのお礼

レスありがとうございます。
私はまだ、配列とかループとかってのを
勉強してないので、チョト難しかったです。
でも、これからがんばります。
丁寧な回答ありがとうございました。

お礼日時:2001/07/08 14:53

# まず、これってVBですかね?



>Privat Sub OptionA1_Click()
^
 eがないのは入力ミスかな?

>If OptionB2.Valrue=True Then
^
 Valueですよね。
 

>Label1.Caption=""

 ここで、Label1を空文字列にすることって何か意図が
あるのですか?
    • good
    • 0
この回答へのお礼

レスありがとうございます。
>まず、これってVBですかね?
 はい、そうです。書いてませんでしたね。すいません。
 それにしてもタイプミスばかりで・・・・・・

お礼日時:2001/07/08 14:50

このQ&Aに関連する人気のQ&A

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

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

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

Qテキストボックスに書いた複数行のテキストデ-タをコマンドボタンクリック

テキストボックスに作成したデ-タをコピ-ボタンでコピ-して、OutlookExpress
などのメ-ラ-に貼り付けるようなコ-ドを書いていますが、コピ-が上手くいかない
ことが多いので、下のような方法に変えようと思います。

 (1)テキストデ-タを作成(記入)する

 (2)コマンドボタンをクリックする

 (3)自動でメモ帳が起動する

 (4)メモ帳の内容に先ほどのテキストデ-タが貼り付く
    (テキストボックスの内容をメモ帳で開く)

このようにする方法はあるのでしょうか?
shellでメモ帳を開くというのは分かるのですが、対象のファイルを
どのように指定すれば良いのかが分かりません。

よろしくお願いいたします!!!

Aベストアンサー

こんにちは。maruru01です。
違う方法を。

いったん一時ファイルとして保存し、Shellでメモ帳で呼び出します。

memoPath = (メモ帳の起動ファイルのフルパス)
FilePath = (一時ファイルのフルパス)
fileNum = FreeFile
Open FilePath For Output As #fileNum
  Print #fileNum, Text1.Text
Close #fileNum

Shell memoPath & " " & FilePath

では。

Qコマンドボタンのキャプションが文字化けしたりする原因

VBで作成したツールを何度が起動していると、急にコマンドボタンの上の文字(キャプション)が文字化けしてしまいました。
以前はちゃんと出ていたのですが。
原因として考えられることは何でしょうか?
ぜひどちら様かお教えください!

Aベストアンサー

以前似たような現象に成った事が有ります。

1回は、No.2のsha-girlさんのいわれた、「MSPゴシック」でした。
これは、開発マシンとは別のマシンにインストールして、はじめから化けてました。

もう一つは、リソース不足だったようでした。
再起動直後に、他のアプリを起動しないで、目的のツールを起動した時は、問題が無くて、他のアプリと一緒の時や、目的のツールの起動・終了を繰り返した後に発生するのであれば、ほぼ間違いないです。
自分の時は、他のアプリをたくさん起動していたので、それを終了したら直りましたが、目的のツールの起動・終了の繰り返しで発生するとしたら、そのツール内でリソースリークが発生しています。
これは、DevPartner(URL参照)あたりのツールを使うと簡単に見つかるのですが、もし、自分で、デバッグするなら、

1.Getxxxx系のAPIを使用したとき、対応するReleasexxx系のAPIを呼び出しているか。
2.その他、動的に確保した領域等の開放が正しく行われているのか

等を、確認してみてください。

参考URL:http://www.xlsoft.com/jp/products/devp_studio/devp_studio.html

以前似たような現象に成った事が有ります。

1回は、No.2のsha-girlさんのいわれた、「MSPゴシック」でした。
これは、開発マシンとは別のマシンにインストールして、はじめから化けてました。

もう一つは、リソース不足だったようでした。
再起動直後に、他のアプリを起動しないで、目的のツールを起動した時は、問題が無くて、他のアプリと一緒の時や、目的のツールの起動・終了を繰り返した後に発生するのであれば、ほぼ間違いないです。
自分の時は、他のアプリをたくさん起動していたので、それを終...続きを読む

Qコマンドボタンのクリックによるフレーム表示切り替え

Visual Basic 6 に関する質問です。

コマンドボタンをクリックする度に、
画面に配置したフレームの表示/非表示を
切り替える方法を教えていただけないでしょうか?

初歩的な質問で申し訳ございませんが、
よろしくお願いいたします。

Aベストアンサー

今では開発部門(過去の受託先を抱える会社)以外はVB6は使える環境が無いのでは。
其れで回答が出てないのかな。
私は取り合えず、エクセルVBA(そもそもVB6ベースです)でフォームにFrame1を貼り付けてやってみた。
フレームはコントロールですか。どんな名称のものですか。これを質問に書いておく必要があるだろう。
あとフォームに載せるのだろうが。
ーー
トグル的仕組みの質問かと(推測して)思って、参考までに書いてみる。
見当違いなら、この回答全体は無視してください。
下記はエクセルVBAなので、詳細ではこのままは動かないだろう。
Visibleの切り替えが参考になれば。Static st の部分(終了まで、ここのルーチンを抜けても状態を保持する)を参考に。
Private Sub CommandButton1_Click()
Static st
If st = False Then
st = True
Else
st = False
End If
Frame1.Visible = st
End Sub

Qコマンドボタンテキストの改行

VB.NETで
コマンドボタンのテキストを改行したいのですが、
どのようにすればできるのか分かりません。

どなたかご教授宜しくお願いします。

Aベストアンサー

"あいう" & chr(13) & "えお"

というように、&を用いてchr(13)と連結してみてください。

定数で言うとvbNewLineがそうです。

Qクリックされたオプションボタンによって、常時複数のテキストBOXの桁数を変えたい

掲題の件ですが、クリックされたオプションボタンによって常時テキストの桁数を変えたいのですが、
これを複数の組み合わせで行いたいときはどのsub(form_load等)にどのように記述したらよいでしょうか?

例えば、オプションボタンで3桁、4桁、5桁の選択肢があるとすると、

Private Sub Option1_Click(Index As Integer)
Me.text1.MaxLength = 3
End Sub

Private Sub Option2_Click(Index As Integer)
Me.text2.MaxLength = 4
End Sub

Private Sub Option3_Click(Index As Integer)
Me.text3.MaxLength = 5
End Sub

となりますが、この組み合わせを複数作りたい場合、オプションボタンとテキストboxをコントロール配列にして、

Dim i As Integer
For i = 0 to 3
If Option1(i).Value = True Then
Me.text(i).MaxLength = 3
ElseIf Option2(i).Value = True Then
Me.text(i).MaxLength = 4
ElseIf Option3(i).Value = True Then
Me.text(i).MaxLength = 5
End If
Next

このような形になると思いますが、これですとForm_Loadに貼り付けても常時桁を変えることができません。

どのsubにどのようにコードを記述したらよいか教えていただけたら幸いです。
よろしくお願い致します。

掲題の件ですが、クリックされたオプションボタンによって常時テキストの桁数を変えたいのですが、
これを複数の組み合わせで行いたいときはどのsub(form_load等)にどのように記述したらよいでしょうか?

例えば、オプションボタンで3桁、4桁、5桁の選択肢があるとすると、

Private Sub Option1_Click(Index As Integer)
Me.text1.MaxLength = 3
End Sub

Private Sub Option2_Click(Index As Integer)
Me.text2.MaxLength = 4
End Sub

Private Sub Option3_Click(Index As Integer)
...続きを読む

Aベストアンサー

VB6でしょうか?
はじめから作ってみてください

FormにFrame1を配置し、その中に
Option1と2と3、
それと、Text1を配置します。

Frame1をコピーし必要なだけ貼り付けます
(中のコントロールも配列で配置されます)

Private Sub Option1_Click(Index As Integer)
Text1(Index).Text = 3
End Sub

Private Sub Option2_Click(Index As Integer)
Text1(Index).Text = 4
End Sub

Private Sub Option3_Click(Index As Integer)
Text1(Index).Text = 5
End Sub

 テスト用にTextプロパティにしています。


このカテゴリの人気Q&Aランキング

おすすめ情報