2016-04-06 8 views
0

私はかなりどこかで、誰かがすでにこの問題を説明していたと確信していますが、私は正しい答えを見つけることができません。ここでvba:クリップボードの貼り付けの日付が米国の書式に変更されます

は状況です:私はこの

何か日時何か何か...

のBla 31/03 /のような値を使用してWindowsのクリップボードにリストをコピープログラムのうち 16 2時20分22秒BLAのBLA

のBla 01/04/16 3時10分10秒BLAのBLA

次にVBAコードが見つかっ最後の空き行とExcelで

.PasteSpecial xlPasteAll 

結果は

あるんのBla 31/03/2016 20:22.0のBla Blaの

のBla 2016年4月1日10:10,0のBla Bla

これはそうではありません。

私はPaste:=xlValuesを得るカントというように動作するように、同じ結果

.PasteSpecial Format:="Unicode-Text"を試してみました。 (1004)

私がシートを右クリック(またはctrl + v)して、それを過ぎると、すべてのことが魔法のように正しく表示されます。

のBla 2016年3月31日2時20分22秒のBla Blaの

のBla 2016年4月1日3時10分10秒のBla Blaの

だから、私は非常に愚かな何かをやって、私だと仮定それを正しくするためにvbaの式を見つけるだけです。

誰かが私を助けてくれますか?

+0

単純なコマンドを実行したときにすべてが正しい方法で表示されたら、マクロレコーダーを使用してコードを編集します。 – Vityata

+0

はい、私がやった最初のことでした!残念ながら結果は同じでした。レコーダーはコードを出します:ActiveSheet.PasteSpecialフォーマット:= "Unicode-Text"、リンク:= False、DisplayAsIcon:= False、NoHTMLFormatting:= True –

+0

".PasteSpecial Paste:= xlPasteFormats"について – Vityata

答えて

0

この特定の問題に対する簡単な答えはないようですので、私は自分自身で回避策を書いています。

この回避策は、Windowsクリップボードから貼り付けて、さまざまなデータがある場合にのみ必要です。優れたExcelにはさまざまな可能性があります。

Dim iDay As Integer 
Dim iMonth As Integer 
Dim iYear As Integer 
Dim currRow As Integer 
Dim iName As String 

'Change date to correct date because of xl bug 
currRow = 3 
iName = ThisWorkbook.Sheets("YourSheet").Cells(currRow, 4) 

Do While iName <> "" 
    If InStr(1, ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), "/", vbTextCompare) <> 0 Then 
     ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2).Replace "/", "." 
    Else 
     iDay = Split(ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), ".")(1) 
     iMonth = Split(ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), ".")(0) 
     iYear = Split(ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2), ".")(2) 
     ThisWorkbook.Sheets("YourSheet").Cells(currRow, 2) = DateSerial(iYear, iMonth, iDay) 
    End If 
currRow = currRow + 1 
iName = ThisWorkbook.Sheets("YourSheet").Cells(currRow, 4) 
Loop 
関連する問題