Hulp gevraagd met argumenten in een sub

Status
Niet open voor verdere reacties.

hellboy01

Gebruiker
Lid geworden
18 jun 2006
Berichten
333
Hi,

ik heb 2 subs gemaakt waarin in de eerste sub argumenten worden gezet voor de 2e sub, maar ik doe denk ik iets fout want hij geeft de melding compile error / syntax error.
Weet iemand waar het fout gaat? Regel 3 "BTWexTotaal(6,15)" wordt rood.
De bovenste sub zit in een userform onder een button en de tweede zit in een module.

alvast bedankt voor het meedenken.



Code:
Private Sub btnBTW_Click()
    
    'Sheet3.Select
    'frmBTW.Show
    BTWexTotaal (6,15)
    
    BtwPdfMaken
    
    
End Sub




Sub BTWexTotaal(robTest As Integer, robRange As Integer)

'robDblSumIf = Application.WorksheetFunction.SumIf(tSheet1.Range("B2:B" & lastRow), _
                      robStr, _
                      tSheet1.Range("H2:H" & lastRow))
'Set tSheet1 = ThisWorkbook.Sheets(maandStr)

Dim sumIfbtwX As Double
'Dim Robtest As Integer
Dim btwSheet As Worksheet
'Dim robRange As integer
Dim testSheet As Worksheet
Set testSheet = ThisWorkbook.Sheets("VerkoopData")
Set btwSheet = ThisWorkbook.Sheets("BTWPrint")
'robRange = 15
'Robtest = 21

sumIfbtwX = Application.WorksheetFunction.SumIf(testSheet.Range("H2:H10000"), _
            robTest, _
            testSheet.Range("I2:I10000"))

btwSheet.Range("G" & robRange).Value = sumIfbtwX

'MsgBox (sumIfbtwX)
End Sub
 
Het is geen functie. Zet er Call voor:
Code:
Call BTWexTotaal(6, 15)
 
Het leven kan zo simpel zijn ;-)
Bedankt weer EdMoore.

Wat is trouwens het verschil tussen een sub en een functie en wat is beter in dit geval?
 
Het is maar net wat je nodig hebt. Een sub is een stuk programma dat alleen dingen uitvoert. Een functie geeft een waarde terug:
Voorbeeldje:
Code:
Sub Hoofd()
    Call Sub1
    MsgBox fun1("Dit krijg je terug van de functie")
End Sub

Sub Sub1()
    MsgBox "Dit komt uit de sub"
End Sub

Function fun1(Tekst As String) As String
    fun1 = "Functie gestart.  " & Tekst
End Function

Overigens hoeft bij de Sub de Call er alleen voor als je parameters meegeeft.
 
Laatst bewerkt:
Bedankt Oktafish, ik ken de argument syntax alleen van Processing(java) en dat is met haakjes, dit is even wennen met vba.
 
Het leven is nóg simpeler want Call hoeft er niet voor als je de haakjes weg laat:
Code:
     BTWexTotaal 6, 15

En dat wist ik dus niet.
Hoewel ik liever met de haakjes werk, toch ook weer wat geleerd :)
 
In VBA heb je de haakjes nodig in de aanroep op het moment dat je het resultaat van de functie in een variabele wilt zetten. Dan krijg je zoiets:
Code:
    tst = BTWexTotaal(6, 15)
Code:
Function BTWexTotaal(robTest As Integer, robRange As Integer) As Integer
..
End Function

Maar dit mag dus ook:
Code:
    BTWexTotaal 6, 15
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan