2015-06-11 12 views
6

Oluşturduğum bir e-tabloya sahip bir şaşırmayı gördüm. Bilgisayarımda iyi çalışıyor ama ofisdeki diğer bilgisayarların bazılarının ABD lokalizasyonlarına sahip olduğunu biliyorum. VBA'yı İngiliz lokalizasyonu kullanarak bir şeyleri kontrol etmeye zorlamanın bir yolu var mı?İngiliz yerelleştirmesini kullanmak için VBA'yi zorla

Yapmakta olduğum sorun, girilen tarihlerin numaralar veya metin değil, tarih olarak görünmesini sağlamak için Metnin Sütunlarını kullanmamın makronun bir parçası olarak olmasıdır. Bilgisayarımda iyi çalışıyor gibi görünüyor, ama bunu İngiltere lokalizasyonu olarak ayarladığımı biliyorum.

Diğer insanlar sorun yaşıyor ve Birleşik Krallık yerelleştirmesi olup olmadığının farkında değiller. Diğer insanların yerelleşmesini kontrol etmekle ya da bilgisayarlarında Birleşik Krallık yerelleştirmelerine sahip olmak konusunda ısrar etmekten ziyade, bu makronun içinde yapılması gereken her şeyi zorlamak için VBA'ya fazladan bir kod satırı ekleyebilirsem, bu ideal olurdu. İngiltere lokalizasyonu.

Sorun, programın İngiltere formatından ABD formatına geçiş tarihleridir. Makroda metin-sütun aşaması gerçekleştiğinde oluyor gibi görünüyor.

VBA'nın İngiltere yerelleştirmesi olup olmadığını otomatik olarak denetlemek için bir yol var mı, yoksa İngiltere yerelleştirmesi için değiştirmiyor ve sonra da sonunda değiştiriliyor mu? Her lokasyonu Birleşik Krallık lokalizasyonuna zorlamak istemiyorum çünkü bu diğer sorunlara veya kullanıcılara zarar verebilir - kesinlikle arzu edilmeyen bir şey!

Şerefe!

+1

'TextToColumns', tarih sırasını (DMY vb.) Belirlemenizi sağlayan bir' FieldInfo' argümanına sahiptir. Özellikle verilerde zaman parçaları varsa, kesinlikle% 100 güvenilir değildir. Yapabilirsen. Verileri, TTC'yi kullanmak yerine tek tek ayrıştırırdım. – Rory

+0

Şerefe Rory. Bu durumda, verileri koymak için bir Userform'a koymak daha iyi olabilir mi? Tarih alanı, yalnızca makrodaki sonuçları hesapladığından değil, aynı zamanda ortaya çıkan raporun da ismini aldığı için hayati önem taşır. – Miller86

+0

Bir kullanıcı formunun ne tür bir fark yarattığından emin değilim? Belki de makro kodu gönderebilirsiniz, böylece aslında ne yaptığınızı görebiliyoruz. – Rory

cevap

0

Tamam, bu yüzden sadece bir yerelleştirme sorunu olmadığı sonucuna vardım. İngiltere'de yerelleştirmeye ayarlanmış olan ofiste başka bir bilgisayara baktım ve orada yeniden üretiliyor. Ben geldim bu soruna yönelik

İki potansiyel çözümler şunlardır:

Öncelikle, Excel, depolar ayrı tanımlayıcı olarak büyük olarak, tarihler girişine bir userform kullanmak - Plan kullanıcıların tıkla elde etmektir Kullanıcı formu "Tarih Seç" diyen "Tarih Aralığı Seç" kutusu. Bu, altı açılır kutu içerecek - iki seçim üç gün, ay ve yıl. Gün sayısal, ay metin, yıl sayısal olacaktır, çünkü bu hem kullanıcı hem de excel'in hangisinin olduğu konusunda hiçbir karışıklık altında olmayacağı anlamına gelecektir.

İkinci çözüm, tarihleri ​​DDMMMYY - veya 01jan2015 olarak saklamak için excel elde etmektir. Bu benim bir meslektaşımın önerdiği alternatif bir çözümdür, ama kendimi bir noktada kullanıcı formlarını öğretmeyi planlarken, şimdi de olabilir! Formatting MM/DD/YYYY dates in textbox in VBA formları için: Bu aynı sorunu olan herkes :) Trevor Eyre İşte önerilen çözüm kullanarak sona erdi

Edit-

yardımcı

Umut. Zarif ve kullanışlı.

0

Guyz,

çok müthiş yerli işlevi yoktur:

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

Bu fonksiyon appearently hesap yerel ayarlara dikkate alır.Ben başka yerlere kodumu göndermek zorunda kaldı Bu işlev tüm sorunlarımı çözüldü

Çok kötü bir çözüm kullanmak olacaktır:

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

Umut bu tarihleri ​​kopyalarken

1

ben benzer bir sorunu var yardımcı olur matrislere. Yanlış beyanı önlemek için DateSerial (yy, mm, dd) kullanarak tarihi bir sayıya dönüştürdüm ve daha sonra e-tabloyu görüntülerken tarih olarak biçimlendirdim. Tüm hesaplamalar iyi çalışır (ör. Ağ günleri).