Thema Datum  Von Nutzer Rating
Antwort
Rot Prozedur zu groß
25.10.2017 22:02:40 Andreas
NotSolved
25.10.2017 23:05:04 Gast70117
Solved
25.10.2017 23:40:08 Gast77849
NotSolved
25.10.2017 23:40:49 Gast70117
Solved
25.10.2017 23:58:21 Gast70117
Solved

Ansicht des Beitrags:
Von:
Andreas
Datum:
25.10.2017 22:02:40
Views:
1066
Rating: Antwort:
  Ja
Thema:
Prozedur zu groß

Hallo liebe Mitglieder,

ich habe ein Problem und hoffe hier Hilfe zu bekommen.

Zur Sache: Ich habe in VBA ein "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" angelegt und dort einen sich im Prinzip ständig wiederholenden Ablauf eingetragen. Das einzige was sich in den Schrittfolgen ändert ist die jeweilige Zellennummer.

Nun ist es so, ich am Ende rund 2000 Befehlszeilen benötigen und bereits jetzt nach 200 Zeilen schon die Fehlermeldung bekomme, dass die Prozedur zu lang ist.

Gibt es eine Möglichkeit die Prozedur zu unterteilen und wenn Ja, was wäre der einfachste Weg zum Ziel?

Hier ein kurzer Auszug aus dem Code. Die Befehlsblöcke wiederholen sich im Prinzip von 'Shaft 1_regular bis ' Shaft 19_regular. Alles funktioniert prima bis hin zum 11. und von dort an taucht die Fehlermeldung auf.

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

' Shaft 1_regular
    
    If Target.Address = "$P$243" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$244" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$245" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$243" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$244" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$245" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$243" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$244" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$245" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$248" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$249" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$250" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$248" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$249" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$250" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$248" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$249" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$250" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$253" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$254" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$255" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$253" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$254" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$255" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$253" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$254" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$255" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$258" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$259" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$261" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$262" Then Target.Value = Target.Value + 1
    If Target.Address = "$P$263" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$258" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$259" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$261" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$262" Then Target.Value = Target.Value + 1
    If Target.Address = "$R$263" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$258" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$259" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$261" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$262" Then Target.Value = Target.Value + 1
    If Target.Address = "$U$263" Then Target.Value = Target.Value + 1

'Shaft 2_regular

                    etc.

    Cancel = True

End Sub


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Prozedur zu groß
25.10.2017 22:02:40 Andreas
NotSolved
25.10.2017 23:05:04 Gast70117
Solved
25.10.2017 23:40:08 Gast77849
NotSolved
25.10.2017 23:40:49 Gast70117
Solved
25.10.2017 23:58:21 Gast70117
Solved