[[20210706161349]] 『VBA関数:DateSerialが上手く設定できません』(ねね) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA関数:DateSerialが上手く設定できません』(ねね)

ExcelVBA初心者です。

Sheet1にあるJ列の値を同シート内のB列に"yyyy/m/d"の書式に変換したく、
以下のようなコードを設定したのですが、
実行時エラー`1004` `Range`メソッドは失敗しました。というエラーが出ます。
どこが間違っているのかご教授頂けますでしょうか。

なお、J列の値は通常時にDate関数を使うと"yyyy/m/d"の形式に変換できる性質のものですが、
以下のような書式変換ではなぜか"yyyy/m/d"の形式に変換できませんので、DateSerial関数を使って処理したいと考えています。
.Range("B" & i).NumberFormatLocal = "yyyy/m/d"

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

以下抜粋


  With Sheets("Sheet1")

    Dim i As Date
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row

      .Range("B" & i) = DateSerial(Year(Range("J" & i)), Month(Range("J" & i)), Day(Range("J" & i)))

    Next i
  End With


< 使用 Excel:Excel2019、使用 OS:Windows10 >


  Dim i As Date
      ↓
  Dim i As Long

(あ) 2021/07/06(火) 16:34


 J列の値のIsDateがTrueならCDateしてあげるだけでも良さそうですね。
(白茶) 2021/07/06(火) 16:41

 Year関数などの中のRangeの前に.がないのだがいいのだろうか?
(ねむねむ) 2021/07/06(火) 16:47

ご回答頂きありがとうございます。

皆さまにご教授頂きました通り以下のように変更しましたところ、無事処理が完了しました。

CDate関数についても勉強致します。
ありがとうございました。


  With Sheets("Sheet1")

    Dim i As Long
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row

      .Range("B" & i) = DateSerial(Year(.Range("J" & i)), Month(.Range("J" & i)), Day(.Range("J" & i)))

    Next i
  End With

(ねね) 2021/07/06(火) 16:54

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.