1

あるスプレッドシートから日付を取得して、別のスプレッドシートに出力します。日付を取得した後、debug.printを実行すると、正しい形式になっています。日付を出力すると、debug.printにも正しい形式が表示されます。ただし、値が送信されたばかりのスプレッドシートの形式は、正しい形式を示していません。

使ってます:

Sheets(SheetName).Cells(RowNum, ColNum).Value = Data
Sheets(SheetName).Cells(RowNum, ColNum).NumberFormat = "dd/mm/yyyy"

値を貼り付けた後でも、月と日が間違った方法で切り替えられています。

私が間違っていることはありますか?セルを右クリックすると、日付はdd / mm / yyyyと表示されますが、9月4日ではなく4月9日が表示されます。

4

4 に答える 4

1

これは、ローカリゼーションに問題がある可能性があります。

NumberFormatLocalDanielCooksのヒントが役に立たなかった場合は、を使用してみてください;)

編集:以前は、与えられたデータが正しいかどうかを確認するために、ミスタークックによって述べられていました。

編集:

私のドイツ語版では/、セパレーターとして使用するのにかなりの問題があります。そのため、このコードを試してみました.NumberFormat ="dd-mm-yyyy;@"-正常に動作します。好きなように日と月を切り替えることができます。

編集:

.NumberFormatLocal = "TT/MM/JJJJ"で、日、月、年にドイツのショートパンツを使わなければなりませんが、今ではセパレーターとして使うことができます/

いくつかのフォーマット文字列で少し実験する必要があります;)

于 2012-09-17T14:27:54.473 に答える
1

古い投稿を復活させて申し訳ありませんが、VBAが有効な日付を出力する際に​​問題が発生しました。たとえば、5月1日が1月5日に変更されたなど、実際の日付が変更されたUSスタイルでした。この投稿に出くわしましたが、必要な答えが見つかりませんでした。ここで、そして今、私はそれを解決したので、私はそれを共有すると思いました:

重要なのは、日付を格納する変数を「日付」としてではなく「二重」として定義することです。

Dim ReportDate As Double
ReportDate = Date


Range("E6").Value = ReportDate

これは、Excelがローカルでフォーマットする数値の「日付値」を出力するため機能します。たとえば、41644は、英国フォーマットを使用して「05/01/14」または米国フォーマットを使用して「01/05/14」としてフォーマットされます。

これが他の人に役立つことを願っています(おそらく、6か月の間にどのように解決したかを忘れたときの私です)。

于 2014-07-02T01:20:22.860 に答える
0

結局、正しいフォーマットを維持するために、セルを「TEXT」としてフォーマットする必要がありました。

于 2012-09-17T16:09:28.833 に答える
0

(1)入力を読み取るには、変数を「日付」タイプに定義し、日付変数に割り当てる前に日付形式を設定する必要があります。

(2)日付出力を機能させるには、フォーマットする必要もあります。

' **入力された日付を読み取る****

Dim date1 as Date

Range("B2").NumberFormatLocal = "dd/mm/yyyy"

date1 = Range("B2").Value

' **日付を出力します****

Range("E2").Value = date1 

Range("E2").NumberFormatLocal = "dd/mm/yyyy"
于 2014-04-09T09:33:34.680 に答える