
とあるセルの数式バーに表示されている文字列を取得したいのですが、
うまくいきません。
Excelが作成されたときの状況がわからない(確認することができません)のですが、
以下のようなセルがあります。
(1) セルに表示されている値: 00:00.0
(2) セルの書式設定: mm:ss.0
(3) 数式バーに表示されている値: 2012/10/6 0:00:00
このセルのvalue、value2、text、formulaをそれぞれmsgboxで表示させてみたところ、
下記のようになりました。
value = 41188
value2 = 41188
text= 00:00.0
formula = 41188
数式バーに表示される文字列が格納されているのがformulaだと思っていたのですが、
シリアル値が表示されてしまいました。
また、このセルをダブルクリックして編集状態にした後、内容を変えずにリターンキー押下で
確定させると、表示形式が "yyyy/m/d h:mm" に変更されてしまいます。
マクロの目的としては、このセルの表示形式を "yyyymmdd" に変更したいのですが、
他にも数値のデータ列があるため、このセルが「日付」であるかどうかをなるべく固定の入力値なしで
(例えば表示形式が "mm:ss.0" かどうか、などの判断をせずに)やりたいと考えています。
数式バーに表示されている文字列が取得できれば、IsDateで判定できると思ったのですが・・・
どなたかお詳しい方、ご教授よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんばんは。
>textプロパティの値: 36:50.6
確認できました。
>IsDateは分:秒形式でもTrueが返る仕様なのでしょうか?
はい、返ります。今回は、秒以下があったのがいけなかったのだろうと思います。
VBA自体には、秒以下の表現方法はありませんから。
個人的には、以下は、あまりすっきりしたコードではないのですが、一応、これで試してください。
'//
Sub Test1R()
Dim c As Range
Application.ScreenUpdating = False
With ActiveSheet
For Each c In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
If c.Text Like "##:##*" Then
c.NumberFormatLocal = "yyyymmdd"
End If
Next c
End With
Application.ScreenUpdating = True
End Sub
この回答への補足
確認のために試してみたところ、以下はFalseでした。
・55:30
・24:30
23:30 はTrueでしたので、やはりIsDateは時/分形式のものしか
有効な値とは判定しないようです。
何らかの方法で数式バーの表示内容が取得できない限り、
やはりそういったやり方でしのぐしかありませんよね。
とりあえず現状のまま(表示形式の指定を外出し)で
運用することにしたいと思います。
IsDateの仕様について、勉強になりました。
長らくお付き合いいただいて、ありがとうございました。
No.2
- 回答日時:
すみませんが、補足の返事の内容が、私には、よくわかりません。
>IsDateは時刻だけを渡してもFalseになってしまうので、上記ではできないのです・
IsDate は、時刻を渡してもTrue になります。時刻も日付型(Date型)です。
これで、あなたのExcelのVBEditorでは、これは、どうなりますか?
Sub Test_IsDate()
a = "00:00.0"
MsgBox IsDate(a)
End Sub
こちらは、True が返りますが、そちらでは、どうなりますか?
もし、False になる場合は、何か別のものが混入している可能性があります。
http://msdn.microsoft.com/ja-jp/library/00wf8zk9 …
-----------------------
IsDate は、Expression が[日付型]である場合、または Date に変換できる場合、True を返します。それ以外の場合は False を返します。
Date データ型は、[日付と時刻両方の値]を保持します。IsDate は、Expression が有効な日付、時刻、または日付と時刻の値である場合に True を返します。
------------------------(一部加筆)-------------
この回答への補足
数式バーに表示されている文字列: 2012/10/6 15:36:51
textプロパティの値: 36:50.6
上記のセルでFalseが返ります。
IsDateは分:秒形式でもTrueが返る仕様なのでしょうか?
現象からして、時:分形式のみなのだろうなと思っていました。
No.1
- 回答日時:
こんにちは。
>セルが「日付」であるかどうかをなるべく固定の入力値なしで
「固有の入力値」の意味だと解釈しました。
方法は、IsDate以外にも、いくつかあるとは思います。
数値を、日付に変換した時に、その日付が常識の範囲内に日付が変換されているか判定する方法などがあります。数式バーに表示されているのは、内部の数値だから、たぶん取得できないような気がします。
>マクロの目的としては、このセルの表示形式を "yyyymmdd" に変更したい
とすれば、例えば、こうなると思います。
'//
Sub Test1()
Dim c As Range
Application.ScreenUpdating = False
With ActiveSheet
For Each c In .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
If IsDate(c.Text) Then
c.NumberFormatLocal = "yyyymmdd"
End If
Next c
End With
Application.ScreenUpdating = True
End Sub
この回答への補足
textプロパティに入っているのは表示形式に従った値なので、"00:00.0"です。
IsDateは時刻だけを渡してもFalseになってしまうので、上記ではできないのです・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Excel(エクセル) エクセルでセルに数式を入力した状態で、数式バーをクリックすると添付資料のように 「数式に関連するセル 2 2022/11/25 19:36
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
ExcelVBAでテキストボックスの数式バーに文字を入力したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
【Excel VBA】一番右端セルまで...
-
CellEnterイベント仕様について
-
EXCEL VBA 文中の書式ごと複写...
-
【VBA】写真の貼り付けコードが...
-
VBA:日付を配列に入れ別セルに...
-
Excel UserForm の表示位置
-
エクセル VBA ボタンをクリック...
-
Excel 範囲指定スクショについ...
-
Excel VBAでCheckboxの名前を変...
-
C# DataGridViewで複数選択した...
-
Excel VBA IF文がうまく動作し...
-
エクセル、マクロで番号を読込...
-
DataGridViewでグリッド内に線...
-
昨日、質問した件『VBA にて、...
-
【ExcelVBA】値を変更しながら...
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】マクロで書き込ん...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
【Excel VBA】一番右端セルまで...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL VBA 文中の書式ごと複写...
-
VBA:日付を配列に入れ別セルに...
-
C# DataGridViewで複数選択した...
-
Excel UserForm の表示位置
-
入力規則のリスト選択
-
Excel 範囲指定スクショについ...
-
エクセル、マクロで番号を読込...
-
DataGridViewでグリッド内に線...
-
Excel VBAで特定の範囲の空白セ...
-
CellEnterイベント仕様について
-
Excel VBAでCheckboxの名前を変...
-
【ExcelVBA】値を変更しながら...
-
データグリッドビューの結合セ...
-
下記のマクロの説明(意味)を...
おすすめ情報