Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12936 / 13646 ツリー ←次へ | 前へ→

【7860】コンボボックスに値を設定 こうた 03/9/21(日) 0:16 質問
【7863】Re:コンボボックスに値を設定 INA 03/9/21(日) 1:06 回答
【7870】Re:コンボボックスに値を設定 こうた 03/9/21(日) 9:36 質問
【7871】Re:コンボボックスに値を設定 INA 03/9/21(日) 11:23 回答
【7872】Re:コンボボックスに値を設定 こうた 03/9/21(日) 12:53 質問
【7874】Re:コンボボックスに値を設定 INA 03/9/21(日) 19:24 回答
【7875】Re:コンボボックスに値を設定 こうた 03/9/21(日) 20:37 質問
【7876】Re:コンボボックスに値を設定 Jカーター 03/9/21(日) 21:30 回答
【7877】Re:コンボボックスに値を設定 INA 03/9/21(日) 22:31 回答
【7880】Re:コンボボックスに値を設定 こうた 03/9/21(日) 23:58 質問
【7881】Re:コンボボックスに値を設定 Jカーター 03/9/22(月) 8:21 回答
【7882】Re:コンボボックスに値を設定 INA 03/9/22(月) 8:46 回答

【7860】コンボボックスに値を設定
質問  こうた  - 03/9/21(日) 0:16 -

引用なし
パスワード
   質問させていただきたいと思います。

Excelのセルの書式設定は、[h]:mm となっています。
ここには、時間が 10:00 などと入力されています。

この値を取り出してユーザフォームのコンボボックスに
設定したいのですがうまく出来ません。

UserForm1.ComboBox4.Value =

この式の左辺は合っていると思うのですが、
右辺に設定すべき式がわかりません。
もちろん取り出したときの書式設定は、[h]:mm のままにしておきたいです。

簡単な事だと思うのですが、なにぶん初心者ですので
教えていただきたいと思います。
よろしくお願いします。

【7863】Re:コンボボックスに値を設定
回答  INA  - 03/9/21(日) 1:06 -

引用なし
パスワード
   UserForm1.ComboBox4.Value = Worksheets("Sheet1").Range("A1").Text

で良いのかな?

【7870】Re:コンボボックスに値を設定
質問  こうた  - 03/9/21(日) 9:36 -

引用なし
パスワード
   INAさんご回答ありがとうございます。
質問がわかりにくく、申し訳ありませんでした。

ご回答のようにやってみましたが、やはりエラーがでてしまいました。
エラーの内容は、以下の通りです。

実行時エラー '380'
Valueプロパティを設定できません。プロパティの値が不正です。

このようなメッセージが出てしまいます。

セルの書式は、[h]:mm ですが、そこには値(10:00など)が入っているセルも
あれば、何も入力されていないセルもあるのです。
このどちらの場合にもコンボボックスに値を設定できるようにしたいのです。
(値が入っていればその時刻を設定、入ってなければNullを設定)

ご回答頂いたのでは、セルが標準の時にはエラーにならないのですが、
[h]:mm のセルではエラーがでます。

二度手間をかけ、大変申し訳ありません。
どうかよろしくお願いいたします。

【7871】Re:コンボボックスに値を設定
回答  INA  - 03/9/21(日) 11:23 -

引用なし
パスワード
   状況が把握できないですね・・
私が掲載したコードは、セルに表示されている値を取得して、
コンボボックスに表示するものです。当然、空白でも問題ないです。

コンボボックスに入力可能な値であれば、問題ないはずです。
(styleプロパティが、2 になってたりはしないですよね?)

UserForm1.ComboBox4.Value = "10:00"

この記述では、表示できますか?
もしこれで失敗するようであれば、UserForm名 や ComboBox名 が 
正しいか確認して下さい。

【7872】Re:コンボボックスに値を設定
質問  こうた  - 03/9/21(日) 12:53 -

引用なし
パスワード
   INAさんご回答ありがとうございます。

ご指摘通り、styleプロパティが、2 になっていました。
ただし、テキスト機能は無くしたいんですけど、セルから値を
持ってくることはできるという都合のいいことはできませんよね?
styleプロパティを0にしてしまうと、キーボードなどから入力が
できてしまうのでそれは嫌なのです。

わがままを言って申し訳ありません。
よろしくお願いいたします。

【7874】Re:コンボボックスに値を設定
回答  INA  - 03/9/21(日) 19:24 -

引用なし
パスワード
   >ご指摘通り、styleプロパティが、2 になっていました。
>ただし、テキスト機能は無くしたいんですけど、セルから値を
>持ってくることはできるという都合のいいことはできませんよね?
>styleプロパティを0にしてしまうと、キーボードなどから入力が
>できてしまうのでそれは嫌なのです。

ドロップダウンリストに表示できるようにしておけば、大丈夫です。
Additem やRowSource などで、あらかじめコンボボックスに
リスト化してある文字であれば、表示できます。

【7875】Re:コンボボックスに値を設定
質問  こうた  - 03/9/21(日) 20:37 -

引用なし
パスワード
   INAさんご回答ありがとうございます。

>ドロップダウンリストに表示できるようにしておけば、大丈夫です。
>Additem やRowSource などで、あらかじめコンボボックスに
>リスト化してある文字であれば、表示できます。

上記のようにご返信頂いたのですが、なにぶん初心者なので
どのように設定したらいいのかわかりません。

時間は 00:00 から 23:59 まで可能性がありますので
これらをすべてリスト化するということでしょうか?
または、hh:mm を表示できるように設定するのでしょうか?
それとも、コンボボックスのプロパティ「RowSource」に
何かを設定するということですか?

何度も質問して申し訳ありません。
よろしくお願いいたします。

【7876】Re:コンボボックスに値を設定
回答  Jカーター  - 03/9/21(日) 21:30 -

引用なし
パスワード
   お邪魔します。
リストにしていいのならAdditemしてしまうとか
============================
  With Me.ComboBox4
    .AddItem Range("A1").Text
    .ListIndex = .ListCount - 1
  End With
============================
お邪魔しました。

【7877】Re:コンボボックスに値を設定
回答  INA  - 03/9/21(日) 22:31 -

引用なし
パスワード
   表示する範囲がそれだけ多いと、Jカーター さんの言われるように、
リスト化してしまった方が良いですね。
この方法だと、そのたびにリストに追加されていきます。

ところでコンボボックスの必要はあるのですか?
ドロップダウンリストから選択しないのであれば、テキストボックスでも
良いような気が・・・

【7880】Re:コンボボックスに値を設定
質問  こうた  - 03/9/21(日) 23:58 -

引用なし
パスワード
   Jカーターさん、INAさんご回答ありがとうございます。

私も最初はテキストボックスにしようかと思いました。
しかし、「hh:mm」の形以外では入力させたくないのです。
すると、入力されたものが大文字でないかとか、大文字と小文字が
混ざってないとか、「hh:mm」の形で正しく入力されているとか
多くのエラーチェックが発生してしまいます。
これを防ぐためにこの方法を思いついたのですが・・・。
(でももしかして[hh:mm]のスタイルかどうかを一発でチェックできる
方法がありますか?)

今ふと考え付いた方法として、コンボボックスのstyleプロパティを
0にして、キーボードからの入力があったらメッセージボックスを
表示して警告し、入力を無効にするというのを思いつきました。
これで実現できますでしょうか?

この方法以外にも何か実現できるのであれば
ご教授頂きたいと思います。

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

【7881】Re:コンボボックスに値を設定
回答  Jカーター  - 03/9/22(月) 8:21 -

引用なし
パスワード
   こんにちは。
必要か不明ですがこれで00:00〜23:59までのリストはできます。
-------------------------------------------------------------------
Private Sub UserForm_Initialize()
  Dim h As Long
  Dim m As Long
  Dim t() As String
  Dim i As Long
  
  For h = 0 To 23
    For m = 0 To 59
      ReDim Preserve t(i)
      t(i) = Format(h, "00") & ":" & Format(m, "00")
      i = i + 1
    Next m
  Next h
  With Me.ComboBox4
    .List = t
    .Style = fmStyleDropDownList
  End With
End Sub

違ったらすいません。

【7882】Re:コンボボックスに値を設定
回答  INA  - 03/9/22(月) 8:46 -

引用なし
パスワード
   セルに入力するのであれば、ユーザーフォーム上のテキストボックスで
値の正否を判定するのではなく、セル自体に入力規則の時刻0:00〜23:59のように
設定しては、いかがでしょうか?

12936 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free