2016-07-05 3 views
1

날짜 및 시간 스탬프 dd/mm/yyyy hh : mm : ss가있는 userform이 있습니다.VBA 사용자 형식 날짜/시간 스탬프 - 영국

그것은 텍스트 상자에 영국 형식으로 보여 주며, 내가이 코드를 사용하여 생성 :

문제가 발생
Dim iNow 
Dim d(1 To 6) 
Dim i As Integer 


iNow = Now 
d(3) = Year(iNow) 
d(2) = Month(iNow) & "/" 
d(1) = Day(iNow) & "/" 
d(4) = Hour(iNow) & ":" 
d(5) = Minute(iNow) & ":" 
d(6) = Second(iNow) 

For i = 1 To 6 
    If d(i) < 10 Then Timestamp = Timestamp & "0" 
    Timestamp = Timestamp & d(i) 
    If i = 3 Then Timestamp = Timestamp & " " 

Next i 
datetextbox.Value = Timestamp 

때 코드 전송 다음 코드를 사용하여 엑셀 데이터베이스 시트이 정보의 다음 블록 :

'Determine emptyRow in Database Sheet 
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 
Cells(emptyRow, 14).Value = datetextbox.Value 

스프레드 시트 셀에 들어가면 날짜가 MM/DD/YYYY로 변경됩니다. VBA에서 숫자 서식을 시도하고 드롭 다운 메뉴에서 사용자 지정 설정을 사용하고 두 개의 개별 컴퓨터에서 지역 설정이 UK인지 확인했습니다. 나는 이제 간단한 시도 않았다

=MAX(IF(Database!$P$2:$P$1437=P488,IF(Database!$P$2:$P$1437=P488,Database!$N$2:$N$1437,""))) 

(이 후 클렌징 시트로 데이터를 전송하는 공식을 사용하여 동일한 참조 번호의 가장 최근의 기록을 인식합니다 내가 만든 문서에 중요한 부분입니다) dd/mm/yyyy/hh : mm : ss 형식을 나타내지 만 미국 형식으로도 변환됩니다.

도움을 주시면 감사하겠습니다.

+0

'Timestamp = Format (Now, "DD/MM/YYYY hh : mm : ss")'을 사용할 수도 있습니다. 지역 형식이'/'이외의 것을 디바이더로 사용하는 경우 추가 "\": DD 형식의 MM/YYYY "를 사용해야합니다. Timestamp는 아마도'Dim'으로'String'으로되어 있어야합니다. 그래서'Date' 타입으로 끝나지 않아야합니다. – arcadeprecinct

답변

1

나는이 이전에 여기에 여러 번 대답하고있다 의심,하지만 당신은 CDate를 사용해야합니다 :

Cells(emptyRow, 14).Value = CDate(datetextbox.Value) 

이 국가 별 설정을 사용하여 진정한 날짜 값으로 날짜 문자열을 변환합니다.

+0

게시 해 주셔서 감사합니다. 완벽하게 작동합니다! CDate에 대한 지식없이 게시 된 다른 모든 것들은 텍스트 상자를 특정 방식으로 채우거나 vba로 서식을 지정하는 데 중점을 두어 잘못된 방식으로 진행되고있었습니다. –

+0

'CDate'(또는 다른 함수)에 문자열 해석 방법을 알려주는 방법이 있습니까? 이 경우 작동하는 국가 별 설정을 사용하지만 미국 스타일의 날짜 문자열을 읽으려면 어떻게해야합니까? – arcadeprecinct

+0

미국식 형식을 사용하려면 'CDate'가 필요하지 않습니다. VBA는 기본적으로 미국 형식입니다. – Rory