Thema Datum  Von Nutzer Rating
Antwort
20.09.2013 11:04:17 Gast50949
NotSolved
20.09.2013 12:59:47 Gast33298
NotSolved
20.09.2013 15:49:38 Gast51007
NotSolved
21.09.2013 13:47:54 Gast21447
NotSolved
24.09.2013 10:32:11 Ursprungs Gast
NotSolved
24.09.2013 16:55:35 Neuhäusler Korbinian
NotSolved
Rot keine Ahnung wie ich das kurz beschreiben soll :-)
24.09.2013 17:08:49 Gast52681
NotSolved
25.09.2013 08:59:05 Ursprungs Gast
NotSolved
25.09.2013 19:59:07 Gast77462
NotSolved
26.09.2013 11:18:19 Ursprungs Gast
NotSolved
27.09.2013 04:00:32 Gast25383
NotSolved
27.09.2013 04:36:22 Gast52516
NotSolved
27.09.2013 04:09:50 Gast22838
NotSolved
02.10.2013 09:35:50 Gast48511
Solved

Ansicht des Beitrags:
Von:
Gast52681
Datum:
24.09.2013 17:08:49
Views:
906
Rating: Antwort:
  Ja
Thema:
keine Ahnung wie ich das kurz beschreiben soll :-)

Ok, das war schon prägnanter.

 

Ich würde zuerst vorschlagen, diese Activate/Select/Selection's im Code zu beseitigen (wie/warum siehe Link).

Als nächstes wäre zu Überlegen, ob und wie man den Ablauf in einem/meheren Routinen "sinnvoll" strukturieren könnte.

Mein erster Gedanke wäre:

Option Explicit

Sub Ansatz()
 
  On Error GoTo ErrHandler 'bei unvorhergesehenden Fehlern zum Ende springen
 
  If ActiveSheet Is Nothing Then
    Call MsgBox("Kein aktives Tabellenblatt zum Verarbeiten vorhanden.", _
                vbExclamation)
    Exit Sub
    
  ElseIf Not TypeOf ActiveSheet Is Excel.Worksheet Then
    Call MsgBox("Das aktive Blatt ist kein Tabellenblatt. Vorgang kann nicht fortgesetzt werden.", _
                vbExclamation)
    Exit Sub
  End If
 
  Dim wksUebersicht As Excel.Worksheet
  Dim wksQuelle As Excel.Worksheet 'Anmeldeformular
  Dim blnOpend As Boolean 'True wenn die Übersicht geöffnet werden musste, sonst False
 
  'hier ist nun durch obige Schritte gewiss, dass das aktive Blatt ein Tabellenblatt ist
  Set wksQuelle = ActiveSheet
 
  'Übersicht beziehen (wird intern ggf. geöffnet -> dann wurde blnOpend = True gesetzt)
  If Not BezieheUebersicht(wksUebersicht, blnOpend) Then
    Call MsgBox("Übersicht konnte nicht geöffnet werden.", vbInformation)
    Exit Sub
  End If
 
  'hier können nun die Daten übertragen werden
  'Zugriff mit wksQuelle und wksUebersicht möglich
  'ggf. ist es sinnvoll, diesen Vorgang in eine eigene Funktion auszulagern
  '<...>
 
  Call MsgBox("Vorgang erfolgreich abgeschlossen.", vbInformation)
 
GoTo SafeExit
ErrHandler:
  Call MsgBox(Err.Description, vbCritical, "Fehler " & Err.Number)
 
SafeExit:
  If blnOpend And Not wkbUebersicht Is Nothing Then
    Call wksUebersicht.Parent.Close(SaveChanges:=True)
  End If
 
End Sub

Private Function BezieheUebersicht( _
    ByRef Worksheet As Excel.Worksheet, _
    ByRef Opened As Boolean _
) As Boolean
 
  'prüfen ob Übersicht bereits geöffnet ist
  '... wenn ja, dann setze Worksheet, Opened = False und BezieheUebersicht = True
  '... wenn nein, versuche sie zu öffne und ...
  '    ... bei Erfolg, setze Worksheet, Opened = True und BezieheUebersicht = True
  '    ... bei Misserfolg kann nichts weiter getan werden (BezieheUebersicht = False)
 
End Function

Wenn alle Anmeldeformulare gleichzeitig geöffnet sind, dann kann man die Verarbeitung auch gleich mit einer Schleife in einem Rutsch erledigen.

 


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
20.09.2013 11:04:17 Gast50949
NotSolved
20.09.2013 12:59:47 Gast33298
NotSolved
20.09.2013 15:49:38 Gast51007
NotSolved
21.09.2013 13:47:54 Gast21447
NotSolved
24.09.2013 10:32:11 Ursprungs Gast
NotSolved
24.09.2013 16:55:35 Neuhäusler Korbinian
NotSolved
Rot keine Ahnung wie ich das kurz beschreiben soll :-)
24.09.2013 17:08:49 Gast52681
NotSolved
25.09.2013 08:59:05 Ursprungs Gast
NotSolved
25.09.2013 19:59:07 Gast77462
NotSolved
26.09.2013 11:18:19 Ursprungs Gast
NotSolved
27.09.2013 04:00:32 Gast25383
NotSolved
27.09.2013 04:36:22 Gast52516
NotSolved
27.09.2013 04:09:50 Gast22838
NotSolved
02.10.2013 09:35:50 Gast48511
Solved