• ベストアンサー
  • すぐに回答を!

Excel VBAで、様々な書式設定のセルをyyyymmddの文字列に

Excel VBAで、様々な書式設定のセルをyyyymmddの文字列にしたい dim i Columns("A:B").NumberFormatLocal = "@" For i = 1 To 5 If Cells(i, 1)NumberFormat = "@" Then Cells(i, 2) = Aells(i, 1).text Else Cells(i, 2) = Application.text(cells(i, "1"), "yyyymmdd") End If Next Excel VBAで、様々な書式設定のセルをyyyymmddの文字列にしたいのですが・・ 上記のソースを書いた場合、文字列・日付・ユーザ定義などの書式設定ではうまくいきますが、標準で19990101などと入力されていた場合はエラーになってしまいます。 どのように直せばうまくいくのでしょうか? よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数922
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • qyukip
  • ベストアンサー率40% (13/32)

エラーの原因は標準で入力されていた19990101は日付型ではないためです。 1999/01/01のように入力していた文字列を修正すれば正常に表示されます。 日付型へ変換できるかISDATEを使用してチェックを入れてみるといいかもしれません。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • excel vba 17桁の数字が表示できません。

    毎度お世話になります。 EXCEL VBA で、CSVファイルを読み込み マクロで17桁数字を表示したいのですが、どうしても出来ません。 Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "00000000000000000" 上記ですと15桁制限のため下2桁がゼロになってしまい Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "@" ですと1.2345E+16となってしまい Range(Cells(GYO, 1), Cells(GYO, 4)).NumberFormat = "'00000000000000000" ですと'12345678901234500 となってしまいます。 セルの書式設定はあらかじめ文字列にしてありますが、これも vbaで何らかの指定が必要なのでしょうか? 初心者でわからないことだらけですが、よろしくお願いします。

  • VBA 4桁の文字列にするには

    お世話になっております。 相変わらず初心者です。また質問させてください。 基本的なことが原因でしたら大変申し訳ありません。 E列(添付の「番号」列)を4桁の文字列にしたくて、 下記のように組んでみたのですが、 家のPCで実行すると問題なくE列が4桁の文字列:333だったら0333 になるのですが、 友人のPCで実行すると4桁の文字列:333のとき、実行後も333のままです。 何が原因なのかまったくわからず、途方にくれています。 どうすれば無事に動くのかどなたか教えてください。 With ActiveSheet.Range("A1").CurrentRegion Dim i As Long For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row .Range("J:J").NumberFormatLocal = "@" .Cells(i, 10) = Format(.Cells(i, 5), "0000") .Cells(i, 5) = .Cells(i, 10) Next i End With

  • Excelで日付の書式を指定文字列に変換

    Excelで日付の書式を指定文字列に変換 セルから日付情報を得て、文字列でyyyymmddに変換するには、どのようにすればいいでしょうか。VBA・関数のどちらでもかまいません。よろしくお願いします。

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

  • Excel VBAでの" "の正しい使い方

    Excel 2003を使っています。 セルY1には0又は1の数値が入ります。 セルI6とI7の「セルの書式設定」をY1の値によって変化させるのが目的です。 セルY1が0の場合はI6の「セルの書式設定」を「m"月"d"日("aaa") 17:00~ 艇 庫"」に、I7は空白にする。 また、セルY1が1の場合はI6の「セルの書式設定」を「m"月"d"日("aaa") 16:00~ 艇 庫"」に、 I7は「m"月"d"日("aaa") 17:00~ 艇 庫"」にしたいのです。  とりあえず、VBAで以下のようなものを作りましたが、" "の使い方が間違っているようで、意図した結果が出ません。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address = "$Y$1" Then      If Range("Y1") = 0 Then       Range("I6").NumberFormatLocal = "m""月""d""日(""aaa"") 17:00~ 艇 庫"       Range("I7").NumberFormatLocal = ""     Else       Range("I6").NumberFormatLocal = "m""月""d""日(""aaa"") 16:00~ 艇 庫"       Range("I7").NumberFormatLocal = "m""月""d""日(""aaa"") 17:00~ 艇 庫"     End If    End If End Sub  どのように修正すればよいか、お教えください。画像も何もなくて分かりにくいかもしれませんが、よろしくお願いします。

  • エクセルで時間セルをVBで文字列として取り込むには

    エクセルです。 時間セルがあって、エクセル上での表示では 12:30:15 という風に表示するようにセルの書式設定でしているのですが、そのセルを VBで取り出そうとして、 A = Cells( 1,1 ) とかってすると、Aには、0.66656 とかって数字が入ってきてしまいます。 Aは文字列として、DIM A as String とかってしているのですけどね これをちゃんとAに、12:30:15 という形の文字列として入れるのにはどうしたらいいのでしょか

  • Excelの「’」とセルの書式設定(文字列)の違い

    こんばんわ。 Excelの文字列表示について、教えてください。 数字を入力する際に、先頭に「'」を入力すると 文字列として入力することが出来ますが、 数字が入っているセルのセルの書式設定から 「文字列」に表示形式を変更することとの 違いはなんなんでしょうか? やり方は違うけれど、結果は同じということでしょうか? 「'」を入力すると、データが文字そのものに変わり、 表示形式を変更すると、見た目だけ(左揃えになるなど) 文字列のように見えるだけで、データは 数字のままということなんでしょうか?? また、文字列として入力された数字を Value関数で数値に変換してしまうのと セルの書式設定で「数値」に変更するというものも 同じように、違いが良く分かりません。。。 もう、頭の中が「??」だらけです。 違いを教えていただけたら・・・と思います。 どうぞよろしくお願いいたします<m(__)m>

  • Excel VBA シート非選択で表示形式を設定

    Excel2010 VBAで、 ワークシートを選択しない状態で、 このワークシート上のセルの書式設定の表示形式を 数値の少数点以下の桁数1桁 (NumberFormatLocal = "0.0_ ") に設定することはできるのでしょうか。 例えば、 以下のように、WORKという名前のシート(WS2)があって、 Dim WS2 As Worksheet Set WS2 = ThisWorkbook.Sheets("WORK") WS2.Select WS2.Range("A1").Select Selection.NumberFormatLocal = "0.0_ " とすれば、 正しく設定することができるのですが WS2が選択されていない状態で、 WS2.Range("A1").Select を実行するとエラーになります。 (実行時エラー'1004' 'Range'メソッドは失敗しました: 'Worksheetオブジェクト') そこで、NumberFormatLocal を Selection ではなく、 WS2.Range("A1").NumberFormatLocal = "0.0_ " というような記述ができればよいのですが、 実際にはエラーになります。 シートを選択しなくても、 このシート上にあるセルに NumberFormatLocal を 適用するすることはできるのでしょうか。

  • EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。

    Excel VBAにて質問があります。 E列に「01」と表示させたくで 'E列を「文字列」にする Columns("E:E").Select Selection.NumberFormatLocal = "@" と記述しました。 その後、名前を付けて保存でCSV形式にて保存します。 保存されたCSV形式のファイルを開くと「1」のままになってしまいます。 なぜでしょうか?何か他に記述しなければいけないのでしょうか? わかる方教えてください。

  • EXCEL起動と同時に全セル書式を文字列にしたい

    EXCELを起動すると同時に、 全セルの書式が「文字列」になっているようにさせたいのですが、 VBAのAutoExecを使用する以外に方法ありますでしょうか? ユーザー設定やオプションも一通りチェックしたのですが、 そのような設定はできそうになさそうでした。 できれば、XLA化してアドインできるようにさせたいのですが。 どなたか良い方法をご存知でしたら、ご教授くださいませ。 よろしくお願いします。