MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.07.2019, 19:53   #1
stau
MOF User
MOF User
Standard VBA - Löschen Inhalt Tabellenblatt erzeugt Debug-Fehler

Hallo,

Ich scheitere daran, den Inhalt eines bzw. mehrerer Tabellenblätter zu löschen.
Meine Arbeitsblatt-Definitionen sind:
Dim wsEins as Worksheet
Set wsEins=Worksheets(“Tabelle1”)

Das Löschen habe ich mit mehreren Varianten versucht:
wsEins.Cells.Clear
oder
wsEins.Cells.ClearContents
oder
wsEins.Range(„A1:M100“).EntireRow.Delete

In meiner Verzweiflung habe ich dann noch sicherlich sinnloserweise wsEins.Activate davorgesetzt.
Das hat alles nichts geholfen.
Ich muss noch hinzufügen, dass ich in einem früheren Teststadium, ohne dass ich an dieser Stelle etwas verändert hätte, keinen Fehler erhielt.

Was mache ich hier denn falsch?

__________________

Gruß
Horst
stau ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 20:00   #2
Mase
MOF Profi
MOF Profi
Standard

Nabend Horst,

ruhig Blut

Wie lautet der Fehler?

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 20:10   #3
Flotter Feger
MOF Profi
MOF Profi
Standard

Hallo Marco,

er kriegt keinen Fehler ...

... vielleicht sollte ich ihm meine Kristallkugel leihen ?

Mal reinsehen ... bisschen staubig das gute Stück ... so ... oh Mann ... Blattschutz ...

__________________

VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
War der Post für dich hilfreich, darf er von dir auch gerne positiv bewertet werden.
bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Flotter Feger ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 20:28   #4
Storax
MOF Koryphäe
MOF Koryphäe
Standard

@Flotter Feger: Wenn Du Recht hast, dann wissen wir ja was der OP falsch macht.
Er liest keine Fehlermeldungen und er postet auch keine
Vielleicht sieht er auch keine Fehlermeldungen, weil er blind ist. Wer weiß das schon

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 21:43   #5
Mase
MOF Profi
MOF Profi
Standard

Zitat: von Flotter Feger Beitrag anzeigen

Hallo Marco,

er kriegt keinen Fehler ...

... vielleicht sollte ich ihm meine Kristallkugel leihen ?

Mal reinsehen ... bisschen staubig das gute Stück ... so ... oh Mann ... Blattschutz ...

Hm... so stehts zumindest im Topic.
Du hast noch immer diese alten Kristallkugeln ?
Heutzutage gibt's doch Alexa

Bytheway:
Bin gespannt wer das als erster tatsächlich ausprobiert ….

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 22:04   #6
stau
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo,
Entschuldigt bitte vielmals, aber ich gehöre zu den Menschen, die
- auch mal ein Abendessen einnhamen müssen
- nicht ununterbrochen am Rechner sitzen können
und
- sich auf jeden Fall melden, insbesonders, wenn sich jemand um das Anliegen gekümmert hat.

Meine Anwendung wird immer verwirrender, denn nun erhalte ich, nachdem ich zuvor X-mal die Anwendung habe durchlaufen lassen, plötzlich den Fehler nicht mehr beim Löschen der Blätter. Dort habe ich zum Löschen des Inhaltes zurzeit die Befehle
wsEins.Activate und wsEins.Cells.ClearContents
stehen. Sie werden nun fehlerfrei durchlaufen. Ich habe seit meinen Tests, nachdem ich gepostet habe, keinerlei Änderungen vorgenommen.
Ich glaube aber nicht an Geister.

Dafür kriege ich jetzt den Laufzeitfehler 1004: "Anwendungs- oder objektdefinierter Fehler" bei
wsEins.Range("E1:E" & lzSu - 1).Copy
und
wsEins.Range("B" & ez + 2).PasteSpecial xlValues
(lzSu und ez haben die korrekten Zeilenwerte)

Nochmals, bitte seht es mir nach.

__________________

Gruß
Horst
stau ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 22:16   #7
Jadzia_Dax
MOF User
MOF User
Standard

Ein Mäppchen wäre super.
Für heut geh ich aber in die Koje
Jadzia_Dax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 22:19   #8
Mase
MOF Profi
MOF Profi
Standard

Hi Horst,

in welcher Codezeile wird nun, der neue Fehler, aufgeworfen?
Welchen Wert haben die Variablen lzSu und ez an dieser Stelle?

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 22:35   #9
R J
MOF Meister
MOF Meister
Standard

...wo und wie hast Du denn wsEins gesettet? Ist wsEins an dieser Stelle überhaupt bekannt?

gib vorher mal folgenden Code ein:
Code:

Msgbox wsEins.Name
und berichte...

__________________

Ciao, Ralf

Kommt mir irgendwie bekannt vor...
Auf, zum Markplatz der Ideen!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.



Geändert von R J (11.07.2019 um 22:38 Uhr).
R J ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 23:12   #10
stau
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo,

Ich habe noch ein wenig gebastelt und versucht, noch mit Befehlsänderungen etwas zu erreichen, aber ich muss für heute aufgeben.
Ich komme leider erst morgen Nachmittag wieder an meinen Rechner und melde mich dann.
Eine Frage habe ich aber vorab.
Warum ergibt der Befehl wsEins.Range(„B2“).select immer dann einen Fehler, wenn ich nicht wsEins.Activate voranstelle. Das schaut doch so aus, als müsse das Blatt schon vorher aktiv sein.

Ich bin auch schon darauf hingewiesen worden und habe gelesen, dass man Select vermeiden solle wegen Performance-Problemen. Leider habe ich noch nicht verstanden, wie ich das an manchen Stellen vermeiden kann, z. B. wenn ich einfach nur eine Zelle im gleichen oder einem anderen Blatt anspringen muss.

@Ralf
Wie ich schon schrieb:
Dim wsEins as Worksheet
Set wsEins=Worksheets(“Tabelle1”

__________________

Gruß
Horst
stau ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 23:31   #11
R J
MOF Meister
MOF Meister
Standard

...und wo?

__________________

Ciao, Ralf

Kommt mir irgendwie bekannt vor...
Auf, zum Markplatz der Ideen!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.


R J ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.07.2019, 06:30   #12
stau
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo,

Ich habe nun die Excel-Datei angefügt, in der ich u. a. meine beschriebenen Fehler enthalte. Diese habe ich in einem Tabellenblatt beschrieben.

Ich hoffe, dass Ihr mir den einen oder anderen Tipp geben könnt.
Danke im Voraus.
Angehängte Dateien
Dateityp: xlsm Kst_Auswertung_Test.xlsm (61,7 KB, 1x aufgerufen)

__________________

Gruß
Horst
stau ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.07.2019, 07:01   #13
Mase
MOF Profi
MOF Profi
Standard

Moin Horst,

bei mir läuft der Code (derzeit) durch.
Du benötigst das .Activate und .Select, da Du im Nachgang mit ActiveCell arbeitest. (Schleife … Do While Activecell <> "")

Deine Schleife:
Code:

'**********************************************************************************
' ohne Activate voanzustellen, ergibt wsKstSu.Range("B2").Select den LZ-Fehler 1004
'**********************************************************************************
        wsKstSu.Activate
        wsKstSu.Range("B2").Select
        KtoAlt = ActiveCell.Value
        KtoNeu = ActiveCell.Value

        Do While ActiveCell <> "" ' Mach, solange aktive Zelle ungleich ""

Vorschlag:
Ändere die Vorgehensweise und (jetzt kommts) verzichte auf Activate + Select (wer hätte das gedacht)
Hinweis: Schließlich weißt Du ja, in welcher Spalte ActiveCell wäre.

Vorgehensweise:
a) Ermittle die letzte Zeile in der angegebenen Spalte
b) geh solange nach oben, bis die erste gefüllte Zelle gefunden wird
c) merke Dir die Zeilennummer und erhöhe diese um eins

Test mal folgendes in einer neuen TestMappe:
Code:

Sub getLastRow()
    Dim lngLastRow As Long
    Dim wks As Worksheet
    Set wks = Tabelle1 'der CodeName von "ExpOrig"
    'Vorteil von CodeNamen lassen sich goggeln
    'Nur soviel,
    '-----------> Worksheets("Name") verliert das Spiel, sobald das Tabellenblatt umbenannt wird
    '-----------> Worksheets(i) verliert das Spiel, sobald das Tabellenblatt verschoben wird
    '-----------> CodeName verliert das Spiel nur, wenn die Bank den CodeNamen umbenennt ;)
    
        With wks
            lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row +1 'beinhaltet vom Post a)+b)+c)
            MsgBox lngLastRow
        End With
End Sub

Noch n Hinweis:
Wenn Du diese Vorgehenswies des Öfteren in Deiner Mappe benötigst, kannst Du auch aus Gründen der Übersicht, diese Vorgehensweise in eine Funktion auslagern. Ich würds nicht machen, aber schlage es Dir vor bis der Umgang damit sitzt.

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.07.2019, 07:11   #14
stau
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Marco,

Vielen Dank für Deine ausführliche Erklärung.
Also benötigt eine Select-Anweisung doch ein vorangehendes Activate.
Ich dachte, ich bin zu dumm und der Fehler läge woanders.

Ich werde Deinen Vorschlag einsetzen, obwohl......
Damit wird ein Code ja unter Umständen ganz schön lang, wenn man für jedes nicht genutzte Select (plus Activate) jeweils 4 Codezeilen benötigt.

Wieder etwas hinzugelernt.

__________________

Gruß
Horst
stau ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.07.2019, 07:34   #15
Mase
MOF Profi
MOF Profi
Standard

Zitat: von stau Beitrag anzeigen

Hallo Marco,
Damit wird ein Code ja unter Umständen ganz schön lang...

Nicht ganz. Ich habe mehrere Zeilen verwendet um mich zu erklären.
Eigentlich reicht eine Zeile:
Code:

lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row +1
The jumping Point ist das sauberere Referenzieren.
Das vermeidet die Activate, Select, Activecell-Notwendigkeit


Noch n Beispiel:
Code:

    wsAuswert.Activate
    wsAuswert.Cells.ClearContents
    wsKst.Activate
    wsKst.Cells.ClearContents
    wsKstSu.Activate
    wsKstSu.Cells.ClearContents
    wsStapel.Activate
Ist das Gleiche wie :
Code:

    wsAuswert.Cells.ClearContents
    wsKst.Cells.ClearContents
    wsKstSu.Cells.ClearContents
...da referenziert.
Und kommt mit der hälfte an Codezeile aus, wird sogar schneller laufen, da kein Activate und Select ausgeführt werden muss.

Activate und Select is was fürs Auge - also wenn Du dem Code zugucken willst

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.