この間は質問に答えてもらってありがとうございます。もう一つ質問したいことがあって書き込みました。それは、コントロール配列にしてあるオプションボタン1,2,3のうち、プログラムを実行したときにオプションボタン1が押された状態で始めたいですがエラーが出てしまいます。
Private Sub Form_Load()
On Error Resume Next
Me.optButton(0).Value = True
End Sub
と書いたんですけど、「プロシージャの呼び出し、または引数が不正です」って出てしまいます。どうすればこのエラーは消えてくれますか?
新規プロジェクトを作って、確かめてみましたか?
うち(WinXPHome VB6(SP6))では再現できませんでした。
それが、エラーが出た後OK押すと普通にプログラムが実行されて、オプションボタン1も押された状態で始まるんです。つまりはエラーが出てるけど処理はおこなわれているってことなんでしょうか?だとしたらなんでエラーなんだろ。
Form_Loadではなぅ、デザイン時にプロパティウィンドウで、
オプションボタン1のValueをTrueにしておくのはダメですか?
新規プロジェクトで試してみましたか?
オプションボタンのイベントコードが掲示されていないので、
回答が推測の域を超えられません。
Private Sub Form_Load()
Call optButton_Click(1)
End Sub
いろいろ試してみてください。
optButton変更時になにか処理するように記述してあって
そっちでエラーとか?
※私の環境:WinXPPro-SP2 VB6-SP6でも再現しませんが・・・。
LESIAさんごめんなさい。それじゃダメなんです。泣
えっと、調べてみて少しわかったのは、起動する時に一度オプションボタンの処理を通してから起動させるとよいみたいなことが書いてあったんですけどわかりますか?私にはどうやっていいのかわかりませんでした。
えっと、みなさん回答ありがとうございます。説明不足すぎますね。泣
オプションボタン1,2,3が押された時の処理を書きます。
'オプションボタン
Private Sub optButton_Click(Index As Integer)
On Error GoTo lblError
Select Case True
Case optButton(0).Value
Me.txtInput.Text = ""
Me.txtID.Text = ""
Me.txtName.Text = ""
Me.txtMemo.Text = ""
Me.txtInput.Enabled = False
Me.txtID.Enabled = True
Me.txtName.Enabled = True
Me.txtMemo.Enabled = True
Me.cmdReading.Enabled = False
Me.cmdUpdate.Enabled = True
Me.cmdDeletion.Enabled = True
Me.txtID.SetFocus
Case optButton(1).Value
Me.txtInput.Text = ""
Me.txtID.Text = ""
Me.txtName.Text = ""
Me.txtMemo.Text = ""
Me.txtInput.Enabled = True
Me.txtID.Enabled = False
Me.txtName.Enabled = False
Me.txtMemo.Enabled = False
Me.cmdReading.Enabled = True
Me.cmdUpdate.Enabled = False
Me.cmdDeletion.Enabled = False
Me.txtInput.SetFocus
Case optButton(2).Value
Me.txtInput.Text = ""
Me.txtID.Text = ""
Me.txtName.Text = ""
Me.txtMemo.Text = ""
Me.txtInput.Enabled = True
Me.txtID.Enabled = False
Me.txtName.Enabled = False
Me.txtMemo.Enabled = False
Me.cmdReading.Enabled = True
Me.cmdUpdate.Enabled = False
Me.cmdDeletion.Enabled = False
Me.txtInput.SetFocus
End Select
lblExit:
Exit Sub
lblError:
Call MsgBox("[エラー番号]" & Err.Number & vbCrLf & "[エラー内容]" & Err.Description, vbExclamation, "VBエラー")
Resume lblExit
End Sub
といった処理なんですけど、汚いソースでわかりづらいと思います。ごめんなさい。簡単に説明しますと、オプションボタン1,2,3をコントロール配列で作って、それのどれが押されるかで書き込めるTextとか押せるボタンを制御させています。コントロール配列にした理由は、上からの命令です。コントロール配列じゃなかったら簡単にできたんですけど、コントロール配列にしたらエラーがでるようになってしまいました。
SetFocusをコメントにするとどうなります?
画面表示してないからフォーカスで設定でエラーになっているのでは。
あとSelect Case Indexのほうがよくない?
SetFocusをコメントにした場合すんなり実行できました。つまりSetFocusのせいってわかりました。ですが、SetFocusをコメントにしとくわけにもいかず。どうすればいいのでしょうか?本当無知でごめんなさい。
Visibleの値によってセットフォーカスする、しないを切り分けるとか
いなさん、お返事ありがとうございます。SetFocusはつけておきたいのですが、やっぱりSetFocusのせいでエラー出るなら取り払うべきなのかな?
>Private Sub Form_Load()
>On Error Resume Next
>
me.show '<----これいれてみる
> Me.optButton(0).Value = True
>
>End Sub
me.showをいれてみたらどうですか?エラーでますか?
最初にフォーカスを与えるコントロールが決まっているのであれば、
TabIndexプロパティに1をセットしておくとか。
この書き方でも意図した様に動くんですねぇ。
私はちょっとびっくりしました。
>Select Case True
> Case optButton(0).Value
> Case optButton(1).Value
> Case optButton(2).Value
>End Select
ぶぶさんお返事ありがとうございます。ぶぶさんのアドバイスのとおりしてみたら、エラーがおこりませんでした。本当ありがとうございます。
コボルさん、ひでらんさん、お返事ありがとうございます。お二人のやり方も試してみます。本当皆さんの対応に感動します。すごくうれしいです。
あっ、少し勘違いがありました。ごめんなさい。
ツイート | ![]() |