Bir dizi ay ve gelir ölçümü oluşturmanın daha etkili yolu?


0

VBA için nispeten yeniyim ve dizileri tanımlama konusunda bir sorum vardı.

En son ayın değerlerine dayanarak yılın geri kalanı için beş gelir ölçümü belirten bir işlev Microsoft Access'te yazıyorum.

İki iç içe For ... Sonraki döngüler, gelir ölçümleri için bir dış döngü ve geçerli ayın sonuna kadar bir iç döngü kullanıyorum. İç döngüde veriyi bir çıktı tablosuna eklemek için sayaç değerlerini kullanan bir SQL sorgusu var.

Aşağıda sahip olduğum iki diziyi tanımlamanın daha iyi / yoğunlaştırılmış (daha verimli) bir yolu var mı?

Public Sub qapp_Revenue_Run_Rate()

DoCmd.SetWarnings False

Dim strSQL As String
Dim lng, lng2, counter, lngRRStart, lngMonth As Long

Dim month(1 To 12) As String
month(1) = "Jan"
month(2) = "Feb"
month(3) = "Mar"
month(4) = "Apr"
month(5) = "May"
month(6) = "Jun"
month(7) = "Jul"
month(8) = "Aug"
month(9) = "Sep"
month(10) = "Oct"
month(11) = "Nov"
month(12) = "Dec"

Dim metric(1 To 5) As String
metric(1) = "Investment Advisory Base Fees (ex-Sec Lending)"
metric(2) = "AUM Related Expenses"
metric(3) = "Securities Lending Revenue"
metric(4) = "Distribution & Other Revenue"
metric(5) = "BlackRock Solutions and advisory"

Yanıtlar:


0

ArrayFonksiyonu kullanabilirsiniz . A döndürür Variant:

Dim month As Variant

month = Array("Jan", "Feb", "Mar" ...)

veya format işlevini kullanabilirsiniz

Dim month(1 To 12) As String
Dim i As Long

For i = 1 To 12
    month(i) = Format$(DateSerial(2017, i, 1), "mmm")
Next i

Ancak bunun Windows'ta tanımlanan kültüre göre ay adlarını döndürdüğünü unutmayın. Yani başka bir bilgisayarda bu isimleri başka bir dilde verebilir.


Bir not: Siz ilan ettiniz

Dim lng, lng2, counter, lngRRStart, lngMonth As Long

VBA ve VB 6.0'da tür bildirimi yalnızca bir değişken için geçerlidir. Bu, bu satırdaki tüm değişkenlerinizin lngMonthtür dışında olduğu anlamına gelir Variant! Yazabilirsiniz lng = "hello"ve bu bir hata yapmadan çalışır. Yazmalısın

Dim lng As Long, lng2 As Long, counter As Long, lngRRStart As Long, lngMonth As Long

VB.NET’te durum böyle değildir, çünkü varsayılan tür yoktur ( Variantkaldırılmıştır). Yani VB.NET'te ifadeniz Dimdoğru olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.