2011-05-03 14 views
6

Access 2007 kullanıyorum ve bu davranış aşağıdaki gibi çoğaltılabilir.Annoying vba adlandırma davranışı

1) Yeni erişim veritabanı accdb dosyası oluşturun.
2) Veritabanını açın ve yeni vba modülü oluşturun. 2 altprogram Sub2 oluştur)

Sub sub1() 
    Msgbox Err.Description 
End Sub 

4:
3) 1 altprogram sub1 oluşturma Bu noktada her şey son

Sub sub2(Description as String) 
    Msgbox Description 
End Sub 

normaldir.
5) Ama gitmeden ve Sub2 değiştirirseniz o 'Açıklama' şöyle 'd' ile 'açıklamasına', yani değişim 'D' okur böylece: Bu aynı zamanda bir vuruş-üzerindeki etkisi ve değişikliklere sahip

Sub sub2(description as String) 
    Msgbox description 
End Sub 

alt1 de! Böylece abon1 şimdi okur:

Sub sub1() 
    Msgbox Err.description 
End Sub 

Neden Err.Description ' 'Err.Description' olarak değişti?

Bu davranış kodun gerçek işlevselliği üzerinde hiçbir etkiye sahip gibi görünmüyor, bu yüzden sorun yok. Sahip olduğum en büyük sorun, vba modülümü metin dosyaları olarak ihraç edip SVN kontrolü altına almam. Ve son zamanlarda tam anlamıyla bir 'değişme' yükü bu yüzden depoya işledi.

Bunun yapılmasını nasıl engelleyeceğiniz hakkında herhangi bir fikir var mı?

cevap

5

Üzgünüz. Bu VBA'nın kodlanmış bir "özelliği" dir. How does one restore default case to a variable in VBA (Excel 2010)?

Ben kaynak kontrolü ile bu çevrede çalıştık yolu şunları yapan komut dosyası aracılığıyla benim depo çalıştırmaktır:

  1. döndür'ü vba kodu uzantılara sahip tüm değiştirilmiş dosyaları (oluşturarak burada benzer soruya bakın yedek .orig dosyaları)
  2. hiçbir değişiklik vaka değişikliklerin dışında (varsa küçük harf duyarsız muadillerine .orig dosyaların karşılaştırmak bir
  3. ) kalan .orig dosyalar için .orig dosyayı
  4. silmek mı (wi olanlar th gerçek değişiklikler) karşıdaki dosyayı silin ve .orig uzantısını kaldırın.

Bu durum, tek değişikliklerin olduğu durumlarda dosyaları etkili bir şekilde gizler (VBA dosyaları ile çalışırken karşılaştığınız gibi sürekli bir sorun yaşarsınız)). Başka değişikliklerin yapıldığı bir dosyadaki büyük/küçük harf değişikliklerini gizlemez. Mükemmel bir çözümden çok uzak ama geldiğim en iyisi.

+0

Vba'ya karşı savaşan tek kişi olmadığına sevindim! Senaryo fikrini deneyebilirim. Ama şimdi bu "özellik" hakkında biliyorum, sadece onunla yaşayabilirim ve şu andan itibaren tutarlı bir şekilde Pascal vakasını kullanan vbadaki tüm değişkenlerim. Pascal vakası, standart vba kitaplıklarının kullandığı şeydir, bu yüzden bu, herhangi bir vaka duyarlılığı adlandırma çakışmaları ortadan kaldırmalıdır. Her ne kadar rahatsız edici olsa da, bu, yöntem parametrelerinin küçük harf kullanımını tercih etmeme rağmen! – David

0

Ayrıca, VBA'da değişken adlarının büyük/küçük harfe duyarlı olmadığını unutmayın. Bu nedenle, açıklama ve açıklama aynı kapsamda aynıdır.