ここから本文です

ExcelVBAについて質問です。

txz********さん

2020/5/2700:39:48

ExcelVBAについて質問です。

コンボボックスにdate型日付をいれています。選択された日付のシリアル値を取得するためにはどうすればよいですか?
自分の作ったコードが作動せず原因はコンボボックス内の日付のデータを正しく取得できていたいからだと考えこのような質問をさせていただいてます。
この質問は以下のサイトの私の質問の一部です。
もし質問情報が不足していた場合ご確認ください。

もしよろしければしたもわかるかたいましたら教えてください。
https://teratail.com/questions/265119

閲覧数:
28
回答数:
2

違反報告

回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

taihenda****さん

2020/5/2716:33:07

そもそも、コンボボックスのリストにDate型のデータを入れることはできなくて・・・

というかVBAでDate型という場合はセル、もしくは変数だけのことです。
その「日付型の文字列」を受け取ったセルが日付として解釈できれば自動でシリアル値としてセルに入ります。

例えば
コンボボックスのリストの一つに
"2020/5/1"
という文字があり、それをLong型の変数に入れるとシリアル値になります。
Date型の変数に入れるとDate型のデータです。

ユーザーフォームを立ち上げてコンボボックスに
2020/5/1
が表示されているとします。

A1セルにこの日付文字列のシリアル値をコマンドボタンで入れるとします。

Private Sub CommandButton1_Click()
Range("A1") = Format(ComboBox1, "0")
End Sub

A1セルに43952がが入ります。


あるいは

Private Sub CommandButton1_Click()
Dim L As Long
L = DateValue(ComboBox1)
MsgBox L
Range("A1") = L
End Sub


こんな感じだとわかりやすいかも、

kin********さん

2020/5/2705:29:29

以下の部分が問題だと思います。

Set myObj = myRange.Find(What:=KeyDate, LookIn:=xlFormulas)

xlFormulasとしていますから、検索対象はセルに設定された数式である文字列になります。
なぜ数式を検索対象にするのか疑問です。通常はxlValuesでセルの値を検索対象にするのでは。

さらにxlValuesにしたとしても、KeyDateにはシリアル値が入っていますから、セルの値も基本的にシリアル値でなければ正確な検索が出来ないことになります。
セルの表示形式次第で、セルに表示されているものと、Valueとして得られるものとに乖離が生じるので、検索を掛ける時はそのあたりも注意が必要と思います。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる