質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

9253閲覧

Excel VBA セルの文字列を時刻として取得するときの型エラー

Yoshikun_0945

総合スコア224

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/01/31 09:55

##使用ソフト・プログラミング言語
使用ソフト:Excel2016
使用言語:VBA

前提・実現したいこと

Excelのセルの文字列(利用者が時刻として入力した文字列)を時刻として変数に取得したいのです。

発生している問題・エラーメッセージ

下記コードを実行してみたところ、型エラーが発生し、ウォッチウィンドウで確認したところ、セルの文字列を小数点ありの数値?文字列?として取得しているための型エラーのようです。セルの文字列をちゃんと時刻として取得するにはどこを修正すればよろしいでしょうか?

取得前にISDATEを実施してみたところTrueでした。

セルの表示形式:[DBNum3]h:mm
※全角の時刻にしてあります。

該当のソースコード

VBA

1dim 時間 as date 2時間 = cells(7,10).text'J7セルの値を時刻として変数に格納する 3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2020/01/31 10:43

「ちゃんと時刻」というのは? シリアル値ですか?文字列ですか? たぶん現在はシリアル値が取れているので、正しい値ではあると思います。 ちなみに時刻のシリアル値は、小数値で表され、0.5が昼の12時です。
meg_

2020/01/31 10:55

Excel2013で試したところエラーは出ませんでした。 どんなエラーが出ましたか? 実際のエクセルシートとエラー画面を貼ってもらえませんか?
Yoshikun_0945

2020/01/31 11:00 編集

コメントありがとうございます。 シリアル値というのがあるんですね。 16:00と表示されているセルの値を16:00として日付型変数に格納(代入)する予定でしたが、変数に代入するときにセルの値を小数点付の文字列と認識しているため、型違いのエラーが発生しています。 この場合は、シリアル値を時刻に変換してからでないと変数に代入できませんか?
ttyp03

2020/01/31 11:26 編集

シリアル値は既に時刻です。 代入先が文字列とのことですが、質問文はdate型に入れてて矛盾してます。 例えば昼の12時なら、"12:00"が欲しいのか、0.5が欲しいのかどちらですか?
guest

回答1

0

ベストアンサー

やり方はいくつかあると思いますが、Format関数を使うとわかりやすいかと。

VBA

1Dim 時間 As String 2時間 = Format(Cells(7, 10).Value, "h:nn")

参考

投稿2020/01/31 11:33

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshikun_0945

2020/01/31 12:37 編集

回答いただきましてありがとうございました。 セルの表示形式を全角時刻にしているためか、Cells(7,10).valueで試してみましたが、シリアル値を参照しているようでした。 回答いただいたフォーマット機能を使うことでようやくセルの値を時間として認識していただけるようになりました。
ttyp03

2020/01/31 14:07

表示形式は関係ないですよ。 今回のはシリアル値をFormat関数で好みの形式に変換しただけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問