[[20120322115123]] 『シートからフォームへの転記』(ちか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートからフォームへの転記』(ちか)
(Excel 2007, Win 7)

実行時エラー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も設定しています
リストシートは同じものを使用しています。(これが原因でしょうか?)

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


コンボボックスにシートのセルのデータを表示したいだけなら、コンボボックスのtextプロパティーでいけるはずです。

試してみてはどうでしょうか?

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?はじめてみますがなんでしょう

(ちか)




原因はよくわかりませんが、エラーになる値が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.