2014-03-27 4 views
0

나는이 기본 문자를 영국 표준 날짜 "yyyy-mm-dd"로 변경 한 다음 문자열로 변환하여이 기본 문자를 작성했습니다. 내 목적을 위해 작업하기가 쉽기 때문에 문자열로 변환하기 전에 형식을 변경하고 싶습니다. 그러나 문자열은 셀 형식이 변경되었지만 원래의 미국 형식으로 보존 된 것으로 보입니다. 이 문제를 어떻게 해결할 수 있으며 그 이유는 무엇입니까?날짜 서식을 문자열로

Sub Changedate() 

    Sheet1.Cells(1, 3).Select 
    Selection.NumberFormat = "yyyy-mm-dd;@" 
    Sheet1.Cells(1, 4).Select 
    Selection.NumberFormat = "yyyy-mm-dd;@" 

    Dim firstDate As String 
    Dim secondDate As String 

    firstDate = Str(Sheet1.Cells(1, 3).Value) 
    secondDate = Str(Sheet1.Cells(1, 4).Value) 

    MsgBox firstDate 

    Sheet1.Cells(1, 3).Select 
    Selection.NumberFormat = "m/d/yyyy" 
    Sheet1.Cells(1, 4).Select 
    Selection.NumberFormat = "m/d/yyyy" 

End Sub 
+0

** 실제로 ** ** 셀에 표시되는 일반적인 값은 무엇입니까 ....... "형식"값입니까? –

답변

1

당신은 사용해야
firstDate = format(Sheet1.Cells(1, 3).Value, "yyyy-mm-dd")
엑셀 날짜 만 표시 방법에 영향을 단지 수와 변화하는 NumberFormat입니다. Str()은 시스템의 기본 날짜 형식을 사용하고 있으므로 강제로 Format()을 사용해야합니다.

+0

doesnt가 ​​작동하는 것 같습니다. 나는 이것을 시도하고 컴파일 에러가 발생한다. ** ** 작동해야한다. (나는 VBA 도움말 파일을보고 형식에 대한 예제를 복사하여 붙여 넣었다.) 그러나 "expected array"라고 에러 메시지가 나타난다. – user1759942

+0

코드 나에게 게시 된 작품은 시트에서 정확한 값을 올릴 수 있습니까 (게리가 물었을 때)? – avb

+0

실제로 내 질문이 아니며, 나는 단지 내 대답을 게시하기 전에 그것을 테스트했다. 자사의 컴파일 오류 메신저 그래서 실제로 셀의 값과 아무 상관 없어. 내가 설정 한 셀의 "실제"값은'09/03/2010 ' – user1759942

1

시도해 볼 수있는 것은 대신 .text 속성을 사용하는 것입니다. .value은 서식을 지정하지 않고 셀 내용을 가져옵니다. 그래서 .value을 사용하여 잘못 포맷 된 문자열을 볼 수 있습니다. .text은 셀 내용을 () 형식으로 만듭니다 (루프를 실행하는 경우 실행 시간이 오래 걸릴 수 있습니다.) .text은 셀 내용을 가져 오는 데 가장 느린 방법이지만 행이나 실행 횟수는 적습니다 많은 차이를 만들지 않을거야

관련 문제