2015-06-11 28 views
6

Ho colpito un ostacolo con un foglio di calcolo che ho creato. Funziona benissimo sul mio PC ma so che alcuni degli altri PC in ufficio hanno localizzazioni negli Stati Uniti. C'è un modo per costringere VBA a controllare le cose usando la localizzazione britannica?Force VBA per utilizzare la localizzazione britannica

Il problema che sto riscontrando è che come parte della macro utilizzo il testo nelle colonne per garantire che le date immesse vengano visualizzate come date, non come numeri o testo. Sul mio PC sembra funzionare bene, ma so di averlo impostato come localizzazione nel Regno Unito.

Altre persone hanno problemi e non sono a conoscenza se si tratti di una localizzazione nel Regno Unito o meno. Piuttosto che dover fare i conti con la verifica della localizzazione di altre persone o insistere sul fatto che abbiano localizzazioni nel Regno Unito sui loro computer, sarebbe ideale se potessi inserire una riga di codice in VBA per forzare tutto ciò che è stato fatto in questa macro Localizzazione del Regno Unito.

Il problema è che il programma sta passando le date in formato USA dal formato UK. Sembra che stia succedendo quando la fase text-to-column avviene nella macro.

C'è un modo per far controllare automaticamente VBA se si tratta di una localizzazione nel Regno Unito, se non lo si modifica alla localizzazione del Regno Unito e poi si modifica alla fine? Non voglio forzare ogni pc ad avere la localizzazione in UK perché potrebbe causare altri problemi o infastidire gli utenti - qualcosa che NON è assolutamente desiderabile!

Cheers!

+1

'TextToColumns' ha un argomento' FieldInfo' che consente di specificare l'ordine di data (DMY ecc.). Non è assolutamente affidabile al 100%, soprattutto se si dispone di parti temporali nei dati. Se puoi. Analizzerei i dati singolarmente piuttosto che usare TTC. – Rory

+0

Saluti Rory. In tal caso è probabile che sia meglio inserire un Userform per inserire i dati? Il campo data è di vitale importanza in quanto non solo calcola i risultati della macro da esso, ma nomina anche il report risultante - entrambi devono ovviamente essere corretti! – Miller86

+0

Non sono sicuro di quale differenza farebbe un userform? Forse potresti pubblicare il codice macro in modo che possiamo vedere cosa stai facendo in realtà. – Rory

risposta

0

OK, quindi sono giunto alla conclusione che non si tratta solo di un problema di localizzazione. Ho controllato su un altro pc in ufficio che è impostato sulla localizzazione del Regno Unito e si sta riproducendo lì.

Due possibili soluzioni per questo problema che ho incontrato sono:

In primo luogo, come Excel memorizza le date come un identificatore separato, utilizzare un form per inserire le date - Il piano è quello di ottenere agli utenti di scegliere un Casella "Seleziona intervallo di date", che chiamerà il modulo utente "Seleziona data". Questo conterrà sei caselle a discesa - due serie di tre che selezionano giorno, mese e anno. Il giorno sarà numerico, mese testuale, anno numerico, poiché ciò significherà che sia l'utente che l'excel non avranno alcuna confusione su quale sia.

La seconda soluzione è ottenere excel per archiviare le date come DDMMMYY - o 01jan2015 per esempio. Questa è una soluzione alternativa suggerita da un mio collega, ma visto che sto progettando di insegnare a me stesso le userform ad un certo punto, potrebbe anche esserlo ora!

Spero che questo aiuti chiunque abbia lo stesso problema :)

EDIT-

finito per usare la soluzione Trevor Eyre qui suggerito: Formatting MM/DD/YYYY dates in textbox in VBA per userforms. È elegante e utile.

0

Guyz,

C'è una funzione nativa molto impressionante:

DatePart("d", "01/08/2015") will return you the day 
    DatePart("m", "02/08/2015") will return you the month 

Questa funzione prende in considerazione appearently impostazioni locali.Questa funzione risolto tutti i miei problemi quando ho dovuto inviare il mio codice per altre posizioni

Una soluzione molto povera sarebbe quella di utilizzare:

day=Split("somedate","someseparator") 

Spero che questo aiuti

1

devo problema simile quando si copiano le date in matrici. Per evitare false dichiarazioni, ho trasformato la data in un numero utilizzando DateSerial (aa, mm, gg) e quindi semplicemente formattandola come data quando viene visualizzata nel foglio di calcolo. Tutti i calcoli funzionano correttamente (cioè giorni feriali).

Problemi correlati