Bir işleve bir işleve geçtikten sonra sorun yaşıyorum. Temel olarak, bazı bilinen değerlere karşı kontrol etmek istediğim bir dizi dizi içeren bir dizi geçiriyorum. Bunu denediğimde, uyumsuzluk hatasını alıyorum.Geçti Dizisi Eşleşmiyor
Sorunu msgbox ile teşhis etmeye çalıştım, ancak bu, kodun çalıştırılmasında olduğu gibi, kodun dizide diziyi gösterdiği gibi beni daha da şaşırttı. Daha sonra Tamam'ı tıklattığımda, msgbox komutu, hatalı bir hatayla karşılaştığı halde hatalı eşleşme hatasıyla ilgili hatalar görülebilir. Herkes bana neden uyumsuzluk olacağını söyleyebilir mi?
Hata:
Kodu: bir koşul ilk kez karşılanmaktadır
Public Function A2LConvert(ByRef Software As Variant) As Variant
For i = 0 To 6
MsgBox (Software(i))
If Software(i) = "A" Then 'Or "A1" Then
A2LConvert(i) = "A.txt"
ElseIf Software(i) = "C" Then
A2LConvert(i) = "C.txt"
ElseIf Software(i) = "B" Then
A2LConvert(i) = "B.txt"
ElseIf Software(i) = "D" Then
A2LConvert(i) = "D.txt"
ElseIf Software(i) = "E" Then
A2LConvert(i) = "E.txt"
ElseIf Software(i) = "F" Then
A2LConvert(i) = "F.txt"
ElseIf Software(i) = "G" Then
A2LConvert(i) = "G.txt"
Else
A2LConvert(i) = ""
End If
Next i
End Function
nasıl işleve değerini geçiyoruz:
(Sanırım) bu davranışı istediğiniz
bir ara dizi (tempAr) uygulayarak elde edilebilir? –Yapmaya çalıştığınız şey gerçekten net değil. Tahminim, değerleri doğrudan geçirilen dizide değiştirmek istediğinizdir, ancak yaptığınız şey, fonksiyonunuzu yeni değerle ('x.txt') geri çağırmaktır. Mantıksız. Bu noktada kabul edilir çünkü “yazılım”, “varyant” olarak bildirilir ve böylece fonksiyonunuz her şeyi kabul eder (neden her zaman varyantlarla çalışmanın nedeni kötü bir habbittir). Tüm mantık yanlış görünüyor ve semantik de iyi değil: "elseif" in yerine "select case" kullanmalısınız. Neyi başarmak istediğinizi açıkça belirtin ve size doğru kodu vereceğim. –
da sorunuzu uygun MS Office ürünüyle etiketleyin: Excel veya Accces veya diğer –