[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シートからフォームへの転記』(ちか)
実行時エラー380がでて作業できません。よろしくお願いします。
フォームにはコンボボックスが2つあり(cmbA,cmbB),cmbAの値に応じてcmbBの値が変わるようにしています
@cmbAにリスト割り当て
Private Sub UserForm_Initialize()
cmbA.List = Sheets("リストシート").Range("A2:A4").Value
End Sub
AcmbAに応じてcmbBリストを変更
Private Sub cmbA_Change()
Dim si As Integer With FORM_EDIT_DATA si = .cmbA.ListIndex
Select Case si Case 0 .cmbB.RowSource = "リストシート!C2:C31" Case 1 .cmbB.RowSource = "リストシート!D2:D31" Case 2 .cmbB.RowSource = "リストシート!E2:E31" End Select End With End Sub
Bフォームからデータシートにデータを転記
Private Sub DATA_SAVE()
Sheets("データシート").Cells(変数, 7).Value = cmbA.Value
Sheets("データシート").Cells(変数, 8).Value = cmbB.Value
End Sub
ここまでは大丈夫なんですが,データシートからフォームに転記(表示)するときにエラーが出てしまいます
Cデータシートからフォームにデータを転記
Private Sub DATA_STORE()
cmbA.Value = Sheets("データシート").Cells(変数, 7).Value
cmbB.Value = Sheets("データシート").Cells(変数, 8).Value
(この行にデバックがでます,「Valueプロパティを設定できません。プロパティの値が無効です」)
End Sub
どこからが良くないのでしょうか?
因みに,フォームにはcmbAに対するcmbBと同く,cmbCに対するcmbDも設定しています
リストシートは同じものを使用しています。(これが原因でしょうか?)
どなたかご教授ください。お願いします
試してみてはどうでしょうか?
cmdA.text = range("A1")(偽のマダラ)
その転記しようとしているセルにエラー値が入っていないだろうか? 黄色く反転したコードの右辺、Sheets("データシート").Cells(変数, 8).Value にマウスを当てると どんな値がポップアップで表示される? あるいは 変数 にマウスをあててポップアップされる数値を把握して、その行のH列をチェックしてくれる? おかしなデータが入っていないかな?
(ぶらっと)
それと、今回のテーマではないんだけど
Private Sub cmbA_Change()
Dim si As Integer With FORM_EDIT_DATA si = .cmbA.ListIndex
Select Case si Case 0 .cmbB.RowSource = "リストシート!C2:C31" Case 1 .cmbB.RowSource = "リストシート!D2:D31" Case 2 .cmbB.RowSource = "リストシート!E2:E31" End Select End With End Sub
この FORM_EDIT_DATA って、別のユーザーフォームなの? もし、自分自身(このコードが書かれているユーザーフォーム)なら With でくくって.cmbB.RowSource なんてする必要はないし 逆に、かえってわかりづらい。
With と 対になる End With をなくして、.cmbB.RowSource ではなく 普通に cmbB.RowSource このように書くべきだね。
(ぶらっと)
早速やってみたのですが,どうもうまくいきません
「Textプロパティを設定できません。,,,」
が出てきてしまいます
根本的に間違っているところがあるのでしょうか,,,
(ちか)
有り難うございます
ウオッチで確認すると
cmbA.Valueの値は,正しい答え,型はVariant/String
Sheets("データシート").Cells(変数, 7).Valueの値も正しい答え,型は Variant/String
cmbB.Valueの値は空白で(""),型はVariant/String
Sheets("データシート").Cells(変数, 8).Valueの値は正しい答えなんですが,型はVariant/Double
となっています
Double?はじめてみますがなんでしょう
(ちか)
単にコンボのテキスト部に 入力できない設定にしてあるのでは? 手入力は出来ますか?
例えば Styleプロパティ 2-fmStyleDropDownList だったら ↓ 0-fmStyleDropDownCombo に戻すとか。 他のプロパティかもしれないけど・・・。 BJ
BJさんとよく似た見解だけど、 comboboxのMatchRequiredプロパティをTrueに設定してありませんか? >With でくくって.cmbB.RowSource なんてする必要はないし 私の場合はMeキーワードを使ってですが、よくやりますね。 そのようにやると、[.]を入れた後に入力候補が出るので、 楽な部分もあると思いますよ。 他人が見て「わかりにくい」という話だとは思いますけど。 (みやほりん)
みやほりんさんと同じことを思って、テストで、MatchRequired をTrueにしてコンボボックスにリストにないものを いれてみたけど、380のエラーにはならなかった。もちろん、フォーカスを移動させたときに、通常に 「プロパティの値が無効です」というメッセージがでて、フォーカス移動ができないけど。
「実行時エラー 380」で検索すると、同種の悩みの質問が多い。でも、ピリっとした原因や回答が見当たらなかった。
追記)
>Double?はじめてみますがなんでしょう
数値の入っているセルの値のデータ型は必ずDouble型になる。 Double型ってのは、数値で小数点以下も受け入れるよという型)
(ぶらっと)
ぶらっと さん
BJ さん
みやりほん さん
有り難うございます
リストシートの,cmbBのリストを見てみると,「1.01」とか「1.02」といった数値でした
これを文字列に変えると,エラーがでなくなりました
一日中これで仕事が進まなくて大変でした
ありがとうございました
(ちか)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.