VBA - Laufzeitfehler bei Sortierfunktion

Diskutiere und helfe bei VBA - Laufzeitfehler bei Sortierfunktion im Bereich Microsoft Office im Windows Info bei einer Lösung; Moin alle miteinander und ein frohes neues Jahr,ich wollte das Jahr bei uns auf der Arbeit mit einer Vereinfachung unserer Statistikführung beginnen,... Dieses Thema im Forum "Microsoft Office" wurde erstellt von Michael Neumann 1986, 2. Januar 2022.

  1. VBA - Laufzeitfehler bei Sortierfunktion


    Moin alle miteinander und ein frohes neues Jahr,ich wollte das Jahr bei uns auf der Arbeit mit einer Vereinfachung unserer Statistikführung beginnen, hab über VBA eine Eingabemaske und alles erstellt und scheitere jetzt plötzlich ohne meines Wissens nach was geändert zu haben an der Sortierung der Statistikdaten. Ich hatte es Anfang Dezember mal getestet und da hatte das genau so auch funktioniert. =Das ist meine Tabelle: PNG auf workupload.comIch habe ein Formular als Eingabemaske welches mit Hilfe von commandButtons ein Modul anspricht welches die Eingaben überprüft, anhand von einzigarti
     
  2. Michael Neumann 1986 Win User

    VBA - Laufzeitfehler bei Sortierfunktion

    a) Ebend. Öffne deine Datei, drück Alt-F8 und führe "Eingabe" aus => RTE. In dem Fenster darf nichts aus Deiner Datei stehen was der Enduser nachher ausführen könnte. Der Enduser hat ja Makros in seiner PERSONAL.XLSB die er ausführen möchte. Daher zusätzlich Option Private Module
    Ich glaube das Problem mit dem "Enduser" werde ich nicht haben. Das wird nur auf einem Account ausgeführt (der für die Rettungswache) und ich bin der einzige, der hier irgendwie mit Makros oder generell etwas umfangreicher mit Excel arbeitet und die Dinger bereit stellt. Bei insgesamt 6 Mitarbeitern (max. 8 wenn wir dann mal volle Personalstärke erlangen sollten) ist die Menge der Benutzer Überschaubar. Davon abgesehen sind alle froh, dass sie wissen wie der PC einzuschalten geht. =D
    <br />Aber für größere Sachen sollte ich das echt berücksichtigen. Danke für den Tipp. =)
    <br />
    Bei einem umfangreichen Code können immer Fehler auftauchen, so perfekt zu programmieren das es nie dazu kommt ... fast ein Ding der Unmöglichkeit. Daher baut man besser einen Errorhandler ein. On Error Goto ...https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/on-error-statementKomm jetzt aber nicht auf die Idee pauschal "On Error Resume Next" zu sagen, da führt immer zu Folgefehlern und letzten Endes zu einem Fehlverhalten des Programmes (Daten werden überschrieben => worst case die Überschriften u.ä. Dummheiten).
    Puh. Da werde ich mich dann mal rein fuchsen. Prizipiell ist für die Eingabe da die Sortierung eigentlich auch nicht notwendig und er könnte sie im Falle eines Fehlers überspringen.
    <br />Aber da muss ich schauen wie ich den Errorhandler einsetze.
    <br />
    b) Ermittelt alle Zellen die an die/den gegebene(n) Bereich angrenzen.https://docs.microsoft.com/de-de/office/vba/api/excel.range.currentregion
    Ah. Okay.
    <br />
    Für jeden Monat ein eigenes Tabellenblatt ... rein menschlich verständlich, für Excelauswertungen sinnlos. Alle Daten gehören mit einem Datum in eine Tabelle und diese kann man via Pivot-Tabellen u.ä. sehr einfach auswerten. Mehrere Tabellen kann man dabei via Power Pivot miteinander über eine ID verknüpfen.Andreas.
    Früher war es noch schlimmer. Da wurde pro monat eine eigene .xls angelegt und in den Spalten in denen angegeben wurde was für ein Einsatz es ist eine "1" reingeschrieben damit er es unten mit "=SUMME(...)" zusammenzählt anstatt mit "=ANZAHL2(...)" zu arbeiten und solche Geschichten. xD
    <br />Ich habe erst da dann angefangen mich intensiver mit Excel zu beschäftigen damit das endlich mal einfacher wird mit der Eingabe und bin dann jetzt kürzlich darauf gekommen ich könnte mir ja mal VBA und Formulare ansehen um das benutzerfreundlicher zu machen und Eingabefehler (die es vorher zu Hauf gab) zu vermeiden. ^^
    <br />Ich danke Dir auf jeden Fall für Deine Mühe und Deine Geduld mit mir. =)
    <br />
  3. Michael Neumann 1986 Win User

    VBA - Laufzeitfehler bei Sortierfunktion

    Mittlerweile habe ich folgendes herausgefunden:
    <br />Wenn ich die Sortierfunktion in die Prozedur mit der ganzen Übertragung der Werte in die Tabelle unten anfüge gibt er mir den Laufzeitfehler zurück.
    <br />Das Gleiche, wenn ich es in eine eigene Prozedur im Selben oder ausgelagertem Modul reinsetze und den "Call"-Befehl nutze um es im automatisiertem Ablauf sortieren zu lassen.
    <br />Habe ich den Selben Code unverändert in einem seperaten Modul und lasse die Funktion unabhängig von den anderen Prozeduren einzeln laufen, dann macht er es genau so wie er es soll.
    <br />=(
    <br />Jetzt weiß ich, dass die Funktion selbst nicht das Problem ist und ich bekomme es manuell sortiert. Er soll es aber automatisiert nach dem Eintrag machen.
    <br />
  4. Andreas Killer Win User

    VBA - Laufzeitfehler bei Sortierfunktion

    Wenn ich die Sortierfunktion in die Prozedur mit der ganzen Übertragung der Werte in die Tabelle unten anfüge gibt er mir den Laufzeitfehler zurück.
    Hat damit alles nichts zu tun.
    <br />Also fangen wir mal mit den generellen Problemen an.
    <br />a) In ein paar Modulen steht oben schon "Option Explicit" und wenn Debuggen \ Kompilieren gibt es schon mal Fehler.
    <br />Schreibt man in jedes Modul "Option Explicit" gibt es mehr Fehler. Hat mit dem Sortieren nix zu tun, aber da musst Du nochmal ran.
    <br />b) Öffentliche sub/functions
    <br />Der Codeschnipsel von oben gibt es in der sub Eingabe und die kann ich via Alt-F8 direkt aufrufen und dann gibt es schon einen RTE bei
    varJahr = Year(rdStatistikEingabe.txtDatum.Text)
    weil die Userform kein gültiges Datum in der Textbox hat. Hat mit dem Sortieren nix zu tun, aber da musst Du nochmal ran.
    <br />Schreib in alle regulären Module die keinen Code enthalten den man direkt aufrufen sollte
    <br />Option Private Module
    <br />c) Referenzen richtig bilden. Das hat nun auch mit dem Sortieren zu tun. :)
    <br />Ich lösche mal den ganzen "überflüssigen" Code in Eingabe und reduziere ihn auf
    <br />Sub Eingabe()
    'Variablendeklaration
    'Leere Zeile suchen und eintragen
    Dim varNeueZeile As Integer
    varNeueZeile = Worksheets("rdEinsatzstatistikRohdaten").Cells(Rows.Count, 1).End(xlUp).Row + 1

    'Einträge sortieren
    ActiveWorkbook.Worksheets("rdEinsatzstatistikRohdaten").Range(Cells(2, 1), Cells(varNeueZeile, 23)).Sort _
    Key1:=Cells(2, 1), _
    Order1:=xlAscending, _
    Key2:=Cells(2, 2), _
    Order2:=xlAscending, _
    Orientation:=xlTopToBottom, _
    Header:=xlNo
    End Sub
    <br />Wenn wir nun in das Blatt rdEinsatzstatistikRohdaten wechseln und den Code laufen lassen funktioniert er tadellos. Wenn irgendein anderes Blatt aktiv ist, dann gibt es einen RTE 1004. Warum?
    <br />Streng genommen: Der Code fängt mit
    <br /> ActiveWorkbook.Worksheets("rdEinsatzstatistikRohdaten").Range(
    <br />an und selbst das könnte einen RTE 1004 verursachen, wenn die aktuelle Datei "ActiveWorkbook" kein Blatt "rdEinsatzstatistikRohdaten" enthält. Wenn er sich immer auf die Datei beziehen soll, dann
    ThisWorkbook.Worksheets("rdEinsatzstatistikRohdaten").Range(
    <br />das passt dann immer.
    <br />Direkt danach geht es aber mit
    <br />Cells(2, 1), Cells(varNeueZeile, 23)
    <br />weiter und wenn der Code in einem regulären Modul steht, dann beziehen sich diese Range-Objekte auf das aktuelle Blatt und das geht nicht. Formuliert man das aus könnte da so was wie
    <br /> ThisWorkbook.Worksheets("rdEinsatzstatistikRohdaten").Range(ThisWorkbook.Worksheets("rdFhrzgChecklisten").Cells(2, 1)
    <br />stehen.
    <br />Wenn wir WITH verwenden, dann können wir sehr einfach alle Range-Objekte auf dieses Blatt referenzieren
    <br /> 'Einträge sortieren
    With ThisWorkbook.Worksheets("rdEinsatzstatistikRohdaten")
    .Range(.Cells(2, 1), .Cells(varNeueZeile, 23)).Sort _
    Key1:=.Cells(2, 1), Order1:=xlAscending, _
    Key2:=.Cells(2, 2), Order2:=xlAscending, _
    Orientation:=xlTopToBottom, Header:=xlNo
    End With

    <br />Aber warum das alles so kompliziert?
    <br /> 'Einträge sortieren
    With ThisWorkbook.Worksheets("rdEinsatzstatistikRohdaten")
    .Range("A1").CurrentRegion.Sort _
    Key1:=.Range("A1"), Order1:=xlAscending, _
    Key2:=.Range("B1"), Order2:=xlAscending, _
    Header:=xlYes
    End With

    <br />Ermittelt alle Daten in dem Blatt um A1 herum automatisch und sortiert nach Spalte A, dann B.
    <br />Und das Problem das eine Codezeile mit einem WITH anfängt, aber dann un-referenzierte Zellen anspricht gibt es öfters.
    <br />Da musst Du nochmal ran.
    <br />Alles klar?
    <br />Andreas.
    <br />
  5. Michael Neumann 1986 Win User

    VBA - Laufzeitfehler bei Sortierfunktion

    OneDrive nutze ich zwar nicht, aber ich hoffe ein gDrive-Link ist Dir auch Recht. ;)
    <br />[LINK]
    <br />
  6. Andreas Killer Win User

    VBA - Laufzeitfehler bei Sortierfunktion

    Die Informationen reichen nicht aus, wir müssen die Datei sehen.
    <br />Zippe die Datei, dann lade sie auf Dein OneDrive und poste den Download Link hier.
    <br />Andreas.
    <br />
  7. User Advert


    Hi,

    willkommen im Windows Forum!
Thema:

VBA - Laufzeitfehler bei Sortierfunktion - Microsoft Office

Die Seite wird geladen...

VBA - Laufzeitfehler bei Sortierfunktion - Similar Threads - VBA Laufzeitfehler Sortierfunktion

Forum Datum

Excel VBA - Laufzeitfehler ... Die Methode 'Value' für das Objekt 'Range' ist fehlgeschlage

Excel VBA - Laufzeitfehler ... Die Methode 'Value' für das Objekt 'Range' ist fehlgeschlage: Hallo Community,wie so einige habe auch ich das Problem, dass der in der Beschreibung stehende Fehler in unregelmäßigen Abständen auftaucht.An sich ist es ganz simpel.Ich habe eine Userform, in...
Microsoft Office 14. März 2024

Sortierfunktion von Excel

Sortierfunktion von Excel: Ich habe in einem Tabellenblatt die Zeilen abwechselnd farblich gestaltet. Wenn ich mit einem Makro Daten aus einem anderen Arbeitsblatt einfüge und mit der Sortierfunktion sortiere, werden nicht...
Microsoft Office 4. März 2023

Excel VBA Laufzeitfehler 13 Typen unverträglich

Excel VBA Laufzeitfehler 13 Typen unverträglich: Hallo, ich benutze diesen Code, der auch an sich super funktioniert: Sub BestimmteZeilenKopieren Dim Z As Long Dim ZeileMax As Long Dim n As Long Application.ScreenUpdating = False With...
Microsoft Office 11. März 2021

Sortierfunktion mit Zusatzkriterium

Sortierfunktion mit Zusatzkriterium: Wie kann ich erreichen, dass beim (absteigenden) Sortieren der Zahlenwerte in Spalte D - welche mit einer Formel aus den Werten in Spalte B und C berechnet werden - im Fall der Gleichheit...
Microsoft Office 26. März 2019

[Excel 2016] Sortierfunktion

[Excel 2016] Sortierfunktion: Hallo, Wenn ich einen Tabellenbereich ohne Spaltenüberschriften markiere und nach einer Spalte mit Daten sortieren will, dann war ich von meiner alten 2003-Version die klare Aussage gewohnt, die...
Microsoft Office 25. April 2017

Laufzeitfehler ´28´:

Laufzeitfehler ´28´:: Hallo, ich habe eine Excel Tabelle von der Arbeit die dort ohne Probleme läuft, ich habe mir die Datei jetzt mit nach hause genommen, da ich dort noch weiter dran Arbeiten wollte. Jetzt...
Microsoft Office 19. Februar 2017

laufzeitfehler 3709

laufzeitfehler 3709: hallo Community Mein Programm spinnt auf einmal bei ".Update" rsj.Edit rsj.Fields("Parkplsum") = 0 rsj.Fields("pachtfläche") = 0 rsj.Fields("Pacht") = 0 rsj.Fields("Stadtverbandsbeiträge") = 0...
Microsoft Office 18. Januar 2017
VBA - Laufzeitfehler bei Sortierfunktion solved
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.