Functie aanroepen

Status
Niet open voor verdere reacties.

Bas Fluijt

Gebruiker
Lid geworden
6 aug 2007
Berichten
7
Momenteel ben ik met een Excel sheet bezig. Deze bestaat uit een aantal Werkbladen. Wanneer men op bepaalde cellen klikt binnen deze sheet, wordt er een controle uitgevoerd. Dit heb ik gedaan middels een "Worksheet_SelectionChange".

Wanneer ik de controle code rechtstreeks in deze sectie (Worksheet_SelectionChange) invoer werkt het perfect. Nu is het zo dat ik deze controle op alle werkbladen wil hebben. Het makkelijkste zou zijn om hier een Functie van te maken en te includen of aanroepen vanuit een elk gewenst blad.

Ik heb het volgende geprobeerd. De controle regels in een Module gezet (Module 10) Deze heb ik als een Public Funtion Controle_Sheet() gedefinieerd. Wanneer ik de functie vanuit Blad2 ("A1") aanroep krijg ik een Fout 424: Object Vereist. Wanneer ik doe debuggen krijg ik de volgende fout bij de INTERSECT Functie: "Methode Range van Object _Global Mislukt"

Hier de code:

Public Function Controle_Sheet(ByVal Werkblad As String) As String

Dim Locatie, Doel, Regelnr, Status, Huidig, History, Teller

Locatie = Selection.Address
Doel = "B" & Mid(Locatie, 4, 4)
Regelnummer = Mid(Locatie, 4, 4)
Kolomletter = Mid(Locatie, 2, 1)

Huidig = (Kolomletter & Regelnummer)


'On Error GoTo Fout


' Controle op bovenste velden

If Range("F1") = "" Or Range("F2") = "" Or Range("F3") = "" Or Range("F4") = "" Or Range("F5") = "" Then
FOUT If Not Intersect(Target, Range("A10:A103,B10:B103,C10:C103,D10:D103,E10:E103,F10:F103")) Is Nothing Then
If Range("F1") = "" Then
MsgBox "U heeft nog geen datum ingevoerd"
Range("F1").Select
Else
If Range("F2") = "" Then
MsgBox "U heeft nog geen periode ingevoerd"
Range("F2").Select
Else
If Range("F3") = "" Then
MsgBox "U heeft nog geen afschriftnummer ingevoerd"
Range("F3").Select
Else
If Range("F4") = "" Then
MsgBox "U heeft nog geen beginsaldo ingevoerd"
Range("F4").Select
Else
If Range("F5") = "" Then
MsgBox "U heeft nog geen eindsaldo ingevoerd"
Range("F5").Select
Else

End If
End If
End If
End If
End If
End If
End If
Exit Function


'Controle binnen regels


If Not Intersect(Target, Range("B10:B103,C10:C103,D10:D103,E10:E103,F10:F103")) Is Nothing Then
If Range("F" & (Regelnummer - 1)) = "" Then
MsgBox "U heeft in de voorgaande regel vergen een BTW kode op te geven"
Teller = Regelnummer
Range("F" & Teller).Select
Else
If Range(Doel) = "" And Not Huidig = Doel Then
MsgBox "Voer eerst een Grootboeknummer in!!"
Range(Doel).Select
Else
If Not Intersect(Target, Range("E" & Regelnummer, "F" & Regelnummer)) Is Nothing Then
If Range("C" & Regelnummer) = "" Then
MsgBox "U heeft geen omschrijving opgegeven"
Range("C" & Regelnummer).Select
Else
If Not Intersect(Target, Range("F" & Regelnummer)) Is Nothing Then
If Range("E" & Regelnummer) = "" Then
MsgBox "U heeft geen bedrag ingegeven"
Range("E" & Regelnummer).Select
End If
End If
End If
End If
End If
End If
End If


Exit Function

Fout:
MsgBox "Gelieve niet meer dan 1 cel te selecteren"

End Function


Als iemand mij kan helpen hoe ik deze code kan aanroepen of includen binnen VB zou dat een grote hulp zijn.

Alvast Bedankt:thumb:

Bas
 
Laatst bewerkt:
Zet je code eens bij ThisWorkbook. Daar heb je analoge events, en ook een event dat op elk blad van toepassing is.

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'code
End Sub

Sh is het blad waar de wijziging plaats vond.

Zo moet je de code maar 1 keer plaatsen. Je moet je wel bewust zijn van de inefficiëntie van deze oplossing. Alles heeft zo zijn prijs.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan