Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: VB module vereenvoudigen  (gelezen 2866 keer)

0 leden en 1 gast bekijken dit topic.

Offline Hombre

  • Volledig lid
  • **
  • Berichten: 164
  • ¡Qué guapa!
VB module vereenvoudigen
« Gepost op: 12 september 2006, 14:53:20 »
Onderstaande code werkt en is maar een voorbeeld. Wat is de bedoeling? Ik heb een 50 tal code's in modules staan en wil deze een beetje vereenvoudigen. Bij foutmelding zou ik graag naar één en dezelfde module willen verwijzen zodat ik niet in elke module de declaratie en de msgbox moet vermelden.
Probleem zit echter in de foutnummer die bij elke module anders is.
Weet iemand hoe en of dit kan?
Bedankt

Sub NaarData()
Dim kl As String, ft As String
    kl = Sheets("Data").[D3] & " - Klas " & Sheets("Data").[D4]
    ft = ActiveSheet.Name & " - Foutnummer 205"

On Error GoTo FOUT:

    Sheets("Data").Select
    Range("B9").Select
Exit Sub

FOUT:
    MsgBox "FOUT BIJ OPDRACHT!" & (Chr(13)) & (Chr(13)) & "NOTEER HET VOLGENDE:" & (Chr(13))  & kl & (Chr(13)) & ft, vbOKOnly + vbCritical, "RP"

End Sub
Windows XP, Home, SP2, Intel Core2 Duo E6400 2.13Ghz, 1024 MB RAM, GeForce FX 7300LE, HDD:SATA II 160GB NTFS, AVG antivirus, Outlook Express

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:VB module vereenvoudigen
« Reactie #1 Gepost op: 12 september 2006, 16:23:01 »
Zoiets?

Sub NaarData()
Dim kl As String, ft As String
    kl = Sheets("Sheet1").Range("D3") & " - Klas " & Sheets("Sheet2").Range("D4")
    ft = ActiveSheet.Name & " - Foutnummer 205"

On Error GoTo FOUT:
    Sheets("Sheet2").Select
    Range("B9").Select
Exit Sub

FOUT:
    Call foutcontrole(kl, ft)
End Sub

Sub foutcontrole(kl As String, ft As String)
MsgBox "FOUT BIJ OPDRACHT!" & Chr(13) & Chr(13) & "NOTEER HET VOLGENDE:" _
    & Chr(13) & kl & Chr(13) & ft, vbOKOnly + vbCritical, "RP"
End Sub

Wigi
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:VB module vereenvoudigen
« Reactie #2 Gepost op: 12 september 2006, 16:23:35 »
Zoiets?

Sub NaarData()
Dim kl As String, ft As String
    kl = Sheets("Sheet1").Range("D3") & " - Klas " & Sheets("Sheet2").Range("D4")
    ft = ActiveSheet.Name & " - Foutnummer 205"

On Error GoTo FOUT:
    Sheets("Sheet2").Select
    Range("B9").Select
Exit Sub

FOUT:
    Call foutcontrole(kl, ft)
End Sub

Sub foutcontrole(kl As String, ft As String)
MsgBox "FOUT BIJ OPDRACHT!" & Chr(13) & Chr(13) & "NOTEER HET VOLGENDE:" _
    & Chr(13) & kl & Chr(13) & ft, vbOKOnly + vbCritical, "RP"
End Sub

Wigi
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline Hombre

  • Volledig lid
  • **
  • Berichten: 164
  • ¡Qué guapa!
Re:VB module vereenvoudigen
« Reactie #3 Gepost op: 12 september 2006, 16:36:30 »
Bedankt voor de oplossing maar ik had juist een oplossing gevonden. Misschien nog iets korter.
Zo moet ik de functie maar één keer schrijven en voor alle meldingen gebruiken.
Bedankt voor je tijd en moeite.
Opgelost!!!

Sub NaarData()
On Error GoTo fout:
    Sheets("Data").Select
    Range("B9").Select
Exit Sub

fout:
Dim nr As Integer, num As Integer
    nr = 205
    num = Foutmeld(nr)
End Sub
---------------------------------
Function Foutmeld(nr) As Integer
Dim kl As String, ft As String
    kl = Sheets("Data").[D3] & " - Klas " & Sheets("Data").[D4]
    ft = ActiveSheet.Name & " - Foutnummer " & nr

    MsgBox "FOUT BIJ OPDRACHT!" & (Chr(13)) & (Chr(13)) & "NOTEER HET VOLGENDE:" & (Chr(13)) _
    & kl & (Chr(13)) & ft, vbOKOnly + vbCritical, "RP"
End Function


Windows XP, Home, SP2, Intel Core2 Duo E6400 2.13Ghz, 1024 MB RAM, GeForce FX 7300LE, HDD:SATA II 160GB NTFS, AVG antivirus, Outlook Express

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:VB module vereenvoudigen
« Reactie #4 Gepost op: 12 september 2006, 19:10:26 »
Bedankt voor de oplossing maar ik had juist een oplossing gevonden. Misschien nog iets korter.
Zo moet ik de functie maar één keer schrijven en voor alle meldingen gebruiken.
Bedankt voor je tijd en moeite.
Opgelost!!!

Hombre

Ik zie niet in waarom jouw Functie beter zou zijn dan de module die ik voorstelde. Die module moet je ook maar 1 keer toevoegen. Die wordt telkens uitgevoerd bij een fout. Natuurlijk, door wat code van plaats te verwisselen en in te korten kan je wel wat winst boeken. Aan jouw de keuze.

Wigi
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline Hombre

  • Volledig lid
  • **
  • Berichten: 164
  • ¡Qué guapa!
Re:VB module vereenvoudigen
« Reactie #5 Gepost op: 12 september 2006, 19:38:28 »
WG
De oplossing die ik al had is ongeveer even lang en jouw oplossing werkt ook maar ik had het al aangepast.
Het is helemaal geen kwestie van "beter". Ik waardeer je inzet en hulp zeker en vast.
Bedankt
Hombre
Windows XP, Home, SP2, Intel Core2 Duo E6400 2.13Ghz, 1024 MB RAM, GeForce FX 7300LE, HDD:SATA II 160GB NTFS, AVG antivirus, Outlook Express

Offline WG

  • Ervaren lid
  • ***
  • Berichten: 366
  • Geslacht: Man
  • http://www.wimgielis.be
Re:VB module vereenvoudigen
« Reactie #6 Gepost op: 12 september 2006, 20:01:28 »
WG
De oplossing die ik al had is ongeveer even lang en jouw oplossing werkt ook maar ik had het al aangepast.
Het is helemaal geen kwestie van "beter". Ik waardeer je inzet en hulp zeker en vast.
Bedankt
Hombre

Geen enkel probleem Hombre.

PS: wat je wel zou willen nazien is
Sheets("Data").Select
    Range("B9").Select

Is het echt nodig dat je die cel selecteert? Werkt

Sheets("Data").Range("B9").Select
misschien? Indien ja, gebruik dat dan.

Wigi
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

 


www.combell.com