2012-09-07 13 views
10

Mam makro, które określają datę (w mm/dd/rrrr) w polu tekstowym i chcę ustawić tę wartość dla kolumny A w formacie rrrr-mm-dd. Mam następujący kod:Kod VBA do ustawiania formatu daty dla konkretnej kolumny jako "rrrr-mm-dd"

Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value 
Sheet1.Range("A2", "A50000") = Format(Date, "yyyy-mm-dd") 

... i kiedy uruchomić makro, data jest nadal w dd/mm/rrrr formacie.

Jak mogę to zmienić, aby był w formacie, który chcę? Próbowałem różnych rodzajów kodu sprawdzanych przez google i nic nie ustawi formatu tak, jak tego chcę.

Każda pomoc będzie mile widziane ...

EDIT: Pełny kod z komentarzem OP poniżej:

Workbooks.Add 
Range("A1") = "Acctdate" 
Range("B1") = "Ledger" 
Range("C1") = "CY" 
Range("D1") = "BusinessUnit" 
Range("E1") = "OperatingUnit" 
Range("F1") = "LOB" 
Range("G1") = "Account" 
Range("H1") = "TreatyCode" 
Range("I1") = "Amount" 
Range("J1") = "TransactionCurrency" 
Range("K1") = "USDEquivalentAmount" 
Range("L1") = "KeyCol" 
Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value 
Sheet1.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd" 

Odpowiedz

21

użytkowania zakresie za NumberFormat nieruchomość wymusić format zakresie tak:

Sheet1.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd" 
+2

Próbowałem tego i nadal trzymać się starego formatu ... – Kristina

+0

@KristinaKotonika - z jakiej wersji programu Excel korzystasz? Przetestowałem to zarówno w programie Excel 2003, jak i programie Excel 2007 bez problemu. Czy nazwałeś najpierw "Sheet1.Range (" A2 "," A50000 ") = Format (Data," yyyy-mm-dd ")? – LittleBobbyTables

+0

Korzystam z programu Excel 2010. Na początku nie wywoływałem kodu, o którym wspomniano powyżej, a po dodaniu go nadal niczego nie zmieniałem. Wcześniej otwieram plik, a następnie czyści dane, ale nie wiem jak to może wpłynąć na format w żaden sposób ... – Kristina

7

Stosujesz formatowanie do skoroszytu zawierającego kod, a nie dodany skoroszyt. Będziesz chciał przyzwyczaić się do pełnych kwalifikacji odniesienia do blachy i zakresu. Poniższy kod nie działa i że dla mnie w programie Excel 2010:

Sub test() 
Dim wb As Excel.Workbook 
Set wb = Workbooks.Add 
With wb.Sheets(1) 
    .Range("A1") = "Acctdate" 
    .Range("B1") = "Ledger" 
    .Range("C1") = "CY" 
    .Range("D1") = "BusinessUnit" 
    .Range("E1") = "OperatingUnit" 
    .Range("F1") = "LOB" 
    .Range("G1") = "Account" 
    .Range("H1") = "TreatyCode" 
    .Range("I1") = "Amount" 
    .Range("J1") = "TransactionCurrency" 
    .Range("K1") = "USDEquivalentAmount" 
    .Range("L1") = "KeyCol" 
    .Range("A2", "A50000").Value = Me.TextBox3.Value 
    .Range("A2", "A50000").NumberFormat = "yyyy-mm-dd" 
End With 
End Sub 
+0

Nawet jeśli ci to pomoże, oznaczę @ littebobbytables jako odpowiedź, ponieważ była poprawną odpowiedzią na zadane w tym momencie pytanie. –

+0

Dziękuję bardzo! To działało idealnie. – Kristina

0

To działa, gdy używasz obie linie:

Application.ActiveWorkbook.Worksheets("data").Range("C1", "C20000") = Format(Date, "yyyy-mm-dd") 
Application.ActiveWorkbook.Worksheets("data").Range("C1", "C20000").NumberFormat = "yyyy-mm-dd"