2012-09-07 7 views
10

Ho una macro che specifica la data (in mm/gg/aaaa) in una casella di testo e voglio impostare questo valore per la colonna A nel formato aaaa-mm-gg. Ho il seguente codice:Codice VBA per impostare il formato della data per una colonna specifica come "aaaa-mm-gg"

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

... e quando ho eseguito la macro, la data è ancora in/gg/aaaa mm.

Come posso cambiare questo in modo che sia nel formato che voglio ?? Ho provato molti tipi di codice ricercato tramite google e nulla imposterà il formato nel modo in cui lo desidero.

Qualsiasi aiuto sarà apprezzato ...

EDIT: il codice ordinario dal commento di OP di seguito:

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" 

risposta

21

utilizzare la proprietà del campo di NumberFormat per forzare il formato della gamma come questo:

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

ho provato e ho ancora continuo a ricevere il vecchio formato ... – Kristina

+0

@ KristinaKotonika - quale versione di Excel stai usando? Ho provato questo in Excel 2003 ed Excel 2007 senza problemi. Hai chiamato 'Sheet1.Range (" A2 "," A50000 ") = Formato (Data," aaaa-mm-gg ") prima? – LittleBobbyTables

+0

Uso Excel 2010. Inizialmente, non ho chiamato il codice che hai menzionato sopra e quando l'ho aggiunto, non ha cambiato nulla. Prima di questo, sto aprendo il file e quindi cancellando i dati, ma non so come questo possa influenzare il formato in alcun modo ... – Kristina

7

Si sta applicando la formattazione alla cartella di lavoro che contiene il codice, non la cartella di lavoro aggiunta. Avrai voglia di prendere l'abitudine di completare pienamente i fogli e le referenze. Il codice qui sotto fa questo e per me funziona in 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

Anche se questo funziona per te, contrassegno @littebobbytables come risposta, dal momento che è stata la risposta corretta alla domanda, come pubblicato in quel momento. –

+0

Grazie mille! Ha funzionato perfettamente. – Kristina

0

Funziona, quando si utilizzano entrambe le linee:

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