Kein schönes Thema, aber leider doch notwendig. Denn wenn ein Laufzeitfehler auftritt weiß man, da ist was falsch. Und es beginnt die Fehlersuche. Show Doch erstmal von vorn. Wenn Sie in einem Modul Code schreiben, wird bereits beim Schreiben geprüft, ob die Code-Syntax richtig ist. Allerdings erst dann, wenn Sie die Zeile wechseln. Wie die Syntax überprüft werden soll, können Sie in den Optionen des VBA-Editors einstellen: Hier ist alles aktiviert. Wenn Sie erst mit Makros anfangen sollten Sie es einfach mal ausprobieren. Beim Kompilieren wird der gesamte Code im Projekt geprüft. Da werden dann auch ggf. Codeteile geprüft, die Sie nicht im Projekt verwenden, die Sie bei Fehlern auskommentieren müssen. Trotzdem kann es vorkommen, dass Fehler erst zur Laufzeit auftreten. Es können Variablen nicht die erwarteten Werte haben, Objekte wurden nicht richtig zugewiesen, die Lebensdauer von Variablen nicht beachtet. Der Code wird dann unterbrochen und Sie werden gefragt, ob die Debuggen wollen. Wenn Sie bejahen, wird der VBA Editor geöffnet und die Zeile mit dem Fehler gelb markiert. Der Code befindet sich aber noch in der Laufzeit, was bedeutet, daß Sie den Inhalt von Variablen prüfen können, wenn Sie mit der Maus über den Namen der Variablen fahren. Der VBA Editor bietet Ihnen beim Auslösen des Fehlers eine Fehlernummer an. In der Hilfe können Sie ggf. nachlesen, was dieser Fehler bedeutet. Aber leider ist die Fehlernummer selten sehr aussagekräftig. Wenn Sie ein Projekt weitergegeben haben ist es natürlich sehr lästig, wenn jemand plötzlich im VBA Editor steht und nicht weiß, was der Code bedeuten soll. Daher sollten Sie immer Fehlerroutinen in Ihre Projekte einbauen. Dazu steht Ihnen das Err-Objekt zur Verfügung. Dieses zeigt Ihnen alle auffangbaren Fehler mit der Fehlernummer und einer Fehlerbeschreibung an. Zusätzlich können Sie mit dem Befehl On Error Aktionen ausführen wie den Code abbrechen oder einzelne Zeilen überspringen, die den Fehler auslösen. So könnte ein Beispiel aussehen: 01 Sub Fehlertest() Dim MyFehler As ErrObject Dim MyNr As Long 'ab jetzt werden die Zeilen mit Fehlern übergangen 'Diese Zeile löst ein Fehler aus 'die Nummer wird angezeigt 'das "On Error Resume Next" wird hier wieder ausgeschaltet On Error GoTo Ende Exit Sub 'wichtige Zeile! Ende: End Sub In Zeile 8 wird die Fehlerbehandlung festgelegt. Sollte in einer Zeile ein Fehler auftreten, wird diese Zeile ignoriert und der Code weiter ausgeführt. Aber Achtung: Es könnten Folgefehler auftreten und der gesamte Code wird dadurch nicht mehr richtig ausgeführt. Daher genau prüfen, ob die Funktion sinnvoll ist. Außerdem wirkt diese Fehlerbehandlung ggf. auch in Funktionen und anderen Prozeduren weiter, was nicht immer erwünscht ist. Dazu müssen Sie die Zeile 18 benutzen. Hier wird die Fehlerbehandlung praktisch wieder ausgeschaltet. Hallo! Ich habe mir in Excel mit VBA eine Schleife gebastelt zur Zielwertsuche. Da ich VBA sonst nie brauche möchte ich hierfür nicht erst VBA lernen. Daher hier meine Frage ob mir hier jemand helfen kann. Es geht um folgendes Skript. Dieses macht Probleme wenn zwischen den Zeilen Leerzeilen sind (Fehler 400). Kann man das irgendwie verhindern? Die leeren Zeilen z.B. überspringen? Vielen Dank! ...komplette Frage anzeigen1 Antwortblablub7 Topnutzer im Thema Microsoft Excel 22.02.2015, 21:32 Leere Zellen kannst du mit
identifizieren.
Das sollte dein Problem lösen Weitere Antworten zeigen Ähnliche FragenVBA Ausgewählte Zeilen kopieren und in anderer Tabelle einfügen (mit Variablen)? Hallo Zusammen, Ich hab ein Problem. Ich würde gern durch das schreiben einer 1 hinter meiner Materialsammlung per Knopfdruck alle gewählten Zeilen in eine Zusammengestellte Tabelle einfügen. Die Materialsammlung bei der ich auswähle ist in Tabelle zwei und wird dann per Knopfdruck abgefragt. Die markierten sollen dann in Tabelle 1 in eine Tabelle eingefügt werden. Da ich aber mit Variablen Arbeite ist das schwieriger als gedacht Hier mein code zum verdeutlichen Private Sub CommandButton1_Click() Dim strBereich As Range Dim x As Integer For x = 3 To 60 If Worksheets(2).Cells(x, 10) = "1" Then Worksheets(1).Range(Cells(x, 2), Cells(x, 9))=Worksheets(2).Range(Cells(x, 1), Cells(x, 8)) End If Next x End Sub funktioniert leider aber nicht. Bitte im Hilfe ...zur Frage In Excel VBA eine If-Schleife um zwei Zeilen voneinander zu subtrahieren (Uhrzeitformat und abs- Funktion inbegriffen)? Mein Bisheriger Versuch: For j = 4 To 700 With ActiveWorksheet If .Cells(j, 2) = "" Then Exit For If Minute(Abs(.Cells(j, 8).Value) - Abs(.Cells(j - 1, 8).Value)) >= 1 Then _ Call FilterCopieVerspätung End Sub Problem: Typenkonflikt ...zur Frage Hallo, ich möchte in einer Excel Datei per vba code bis zur ersten leeren zeile gehen, wie tue ich das? ich möchte zur ersten leeren Zeile gehen und dann den rest markieren und löschen, also den kompletten Bereich ab da? BSp. A10 ist leer, dann möchte ich ab A10:z10 und abwärts alles markieren und löschen Wie?? Sub FIND_EMPTY_CELL() If Cells(z, 1) = "" Then ...zur Frage Vba Programm schleife um viele Variablen zu deklarieren hey habe folgendes Problem: ich brauche in meinem Programm sehr viele Variablen und möchte allen einen wert zuweisen kann ich das übersichtlich in eine schleife packen also nicht so: W1=3 W2=3 W3=3 W4=3 ....... statt dessen will ich alles in eine schleife packen erster versuch: schon mal danke für eure vorschläge ;) ...zur Frage Excel VBA - Umkehrfunktion, und alle Zeilen nach Begriff durchsuchen? Hallo, ich habe ein Problem mit Excel VBA. Ich habe eine Arbeitstabelle, die inzwischen über 76000 Zeilen beinhaltet. Deshalb möchte ich mit VBA eine Userform erstellen, die das Suchen einer bestimmten Zeile leichter macht. Bis jetzt läuft es ganz gut, aber ich habe 1. das Problem, dass wenn ich einen Suchbegriff in eines der Textfelder eingebe, er mir immer nur die erste Zeile markiert, in der der Begriff steht. Da aber der Begriff noch öfter vorkommt, bringt es mir ja nichts, nur die erste Zeile markiert zu bekommen. Das 2. Problem ist, dass bis jetzt nur die gesuchte Zeile farbig markiert wird. Ich möchte es aber hinbekommen, dass alle Zeilen, bei denen der Suchbegriff nicht vorkommt, ausgeblendet werden. Hier mein bisheriges Skript für das erste Suchkriterium: Sub Suche_Click() Dim x As String Dim Z As Integer Dim temp As Integer Z = Sheets(1).UsedRange.Rows.Count x = Belegnr1 [Textbox-Name] temp = 0 For i = 2 To Z If Cells(i, 1) = x Then temp = 1 Exit For End If Next If temp = 1 Then
ActiveSheet.Rows(i).Interior.ColorIndex = 6
' ActiveSheet.Rows(i).Hidden = False [Hier Problem Nr.2 ! ]
' ActiveSheet.Rows.Hidden = True
Else ' ActiveSheet.Rows.Hidden = True MsgBox "Belegnummer nicht vorhanden. Bitte prüfen Sie ihre Eingabe." End If End Sub Danke im Voraus! ...zur Frage Makro zum Zusammenfassen von Spalten Hallo alle zusammen, ich hab ein kleines Problem mit einem Makro, welches ich mir mit Hilfe diverser Quellen versucht habe auf meinen Fall zusammenzuschustern. Folgendermaßen kann man sich die Grundsituation vorstellen: Ich habe in den Spalten D Und E ca 70 Zeilen mit Einträgen. Bis auf die Zellen 11 - 14 Ist die Spalte E leer. Also wollte ich ein Makro benutzen, welches die Spalte D wenn D und/oder E leer sind mit E zusammenfasst und sonst nicht. Das soll dann auch für die Spalten F,G und H,I und immer soweiter klappen. Wer könnte mir Helfen und zeigen wo mein Fehler liegt denn bisher funktioniert das Makro nicht ganz so wie ich mir das vorgestellt habe. Sub Formatierung() Dim Zeile As Integer Dim Spalte As Integer Next Spalte End Sub So sieht das bisher aus. Für jede Hilfe vorab schonmal besten Dank ...zur Frage Wie ermittelt man in Excel (VBA) den Zelleninhalt bei verbundenen Zellen? Ich durchlaufe in meinem Excel VBA-Script die Zellen einer Spalte, um den Zelleninhalt auszuwerten. Nun kann es passieren daß Zellen "verbunden" sind. In diesem Fall liefert mir das Script nur jeweils für die linke oberste Zelle der verbundenen Zellen den Wert zurück. In den anderen Zellen kommt Blank zurück. Ich würde in allen Zellen den gleichen Wert zurückerwarten? ...zur Frage VBA: Automatisch mehrere Tabellenblätter löschen? Moin, ich möchte gerne mehrere Tabellenblätter löschen (Excel -> VBA). Das Problem dabei: Die Nummer des ersten und letzten zu löschenden Blattes soll abgefragt werden. Habe jetzt schon die eine oder andere Zeile "zusammengebastelt", allerdings läuft das Sub noch nicht so ganz rund. Kann mir da jemand weiterhelfen?? Bin mit VBA leider nicht so vertraut.... Sub Aufgabe 17() End Sub ...zur Frage Excel VBA jede n-te Zeile finden und bei der Ausgabe die Steps ignorieren? Moin zusammen, ich baue aktuell in VBA eine Excel Liste bzw. versuche eine auszuwerten. Ziel, jede 21ste Zeile soll ausgelesen und zusammengefasst ausgegeben werden. Leider gibt er die Werte genau in den Steps aus in denen er Sie liest und ich komme mit meinem Probieren nicht weiter. Hat jemand eine Lösung? Hier der Code: Sub AlternativeZeilenAuswaehlen() Dim bereich1 As Range Dim bereich2 As Range Dim x As Integer Dim y As Integer Dim ZeilenNr As Integer 'Den Bereich auswählen Set bereich1 = Range("'Test Yvonne Excel (2)'!E1:E30000") Set bereich2 = Range("Tabelle1!B5:B30000") 'Zeilen zählen ZeilenNr = bereich1.Rows.Count ZeilenNr = bereich2.Rows.Count 'Jede zweite Zelle im Bereich durchlaufen For x = 3 To ZeilenNr Step 21 'den Wert aus Spalte B in Spalte C eintragen bereich2.Cells(x, 1).Offset(0, 0) = bereich1.Cells(x, 1) Next End Sub ...zur Frage Tabellen mit vba nebeneinander anstatt untereinander anordnen? Hallo, ich habe bereits meine Excel-Arbeitsmappe bestehend aus 250 Seiten mit jeweils 2Spalten und 250 Zeilen via vba zusammengeführt. Allerdings wird dabei alles untereinander dargestellt und nicht nebeneinander. Kann man es so machen, dass sobald ein Worksheet abgearbeitet wurde und angezeigt wird, das nächste daneben in der Spalte beginnen lässt und immer so weiter. Gibt es Möglichkeiten dort eine Art „Cut“ zu machen? ...zur Frage Excel: Schiebepuzzle programmieren - Laufzeitfehler 424? Liebe Community, ich habe versucht eine Schiebepuzzle aus Zahlen in Excel zu programmieren. Den Text seht ihr unten. Jedoch sobald ich auf Ausführen (Wiedergabe-Button) drücke, kommt folgender Fehler: |