Werte löschen

Hallo an alle Spezies :smile:)

Ich benötige eine Lösung für folgender Problematik.

Im vorhandenen Datenblatt werden immer wieder neue Berechnungen nach einem festen Schema durchgeführt.

Allerdings möchte ich sicher sein, dass vor jede weitere Berechnung alle Werte im Datenblatt quasi wieder auf „0 €“ gesetz werden.

Dadurch soll verhindert werden, dass sich falsche Werte einschleichen,

Besten Gruß
Wander

Hallo Wander,

Im vorhandenen Datenblatt werden immer wieder neue
Berechnungen nach einem festen Schema durchgeführt.

das bedeutet du hast da Formeln in einigen Zellen oder meinst du was anderes?

Allerdings möchte ich sicher sein, dass vor jede weitere
Berechnung alle Werte im Datenblatt quasi wieder auf „0 €“
gesetz werden.

Extras–Makro–Aufzeichnen
Vergib den Namen „Loesch“, ggfs. tastenkombination zuweisen, ggfs eine Beschreibung eintragen.

Dann mach irgendwas Beliebiges, Kopier A1 nach B1, egal. Dann beende die Aufzeichnung.

Alt + F8, wähle das makro Loesch aus und klicke auf Bearbeiten,
Füge das dann ein

Sub Loesch()
Dim Zelle As Range
On Error Resume Next
ActiveSheet.Cells.SpecialCells(xlCellTypeConstants).ClearContents
End Sub

Hast du eine Tastenkomnination zugewiesen so übernimm die entsprechende Zeile aus der aufgezeichneten Loesch()
danach lösche die aufgezeichnete Loesch.

Vorsicht, das Makro löscht alle Werte des gerade sichtbaren Blattes, sicherer ist du ersetzt die eine Zeile durch:
Worksheets(„Blattname“).Cells.SpecialCells(xlCellTypeConstants).ClearContents

Vorsicht2, Bearbeiten–Rückgängig funktioniert nicht nach makroausführung. Dafür müßte man im Code selbst dafür sorgen.

benutzung des makros dann durch Extras–makros–Ausführen oder Alt+F8–Ausführen oder ggfs durch die Tastenkombination.

Gruß
Reinhard

Grüezi Wander

Hallo an alle Spezies :smile:)

…ich antworte trotzem mal… :wink:

Im vorhandenen Datenblatt werden immer wieder neue
Berechnungen nach einem festen Schema durchgeführt.

Allerdings möchte ich sicher sein, dass vor jede weitere
Berechnung alle Werte im Datenblatt quasi wieder auf „0 €“
gesetz werden.

Dadurch soll verhindert werden, dass sich falsche Werte
einschleichen,

EIn händischer Weg ist der folgende:

  • Markiere alle Zellen die Du anschliessen löschen möchtest (bei gedrückter STRG-Taste)
  • Trage denn im namensfels links neben der Bearbeitungszeile einen Namen für diesen Bereich ein (z.B. ‚Eingaben‘)

Nun kannst Du zu beginn im selben Namensfeld diesen beannten Bereich aus dem DropDown auswählen. Alle Zellen dieses Bereiches werden dann markiert und Du kannst mit ‚Löschen‘ diese Werte auf ‚0‘ setzen.

Eine weitere interessante Möglichkeit tut sich damit auch noch auf.
Du kannst bei derart markierten Zellen mit der TAB-Taste von der einen zur nächsten springen und deine Eingaben machen. Die Zellen werden in der Reihenfolge angesprungen in der du sie beim Festlegen des Bereichsnamens markiert hast.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hoi Reinhard,

in einigen Felder sind Formeln drin und in anderen Feldern wiederum Texte. Das soll nicht gelöscht werden.

Was genullt werden soll sind bestimmte Bereiche. Zum Beispiel A1-B6 und A10-B19.

Ich hoffe, dass es so etwas deutlicher ist.

Ich habe es bereits über „Makro aufzeichnen“ umsetzen können. Allerdings ist das der mühsamerer und unfeinerer Weg weil jedes einzelne Feld angesprochen werden muss und das Makro beim Ausführen das Bild ruckeln lässt :smile:)

Besten Gruß
Wander

Hallo Thomas,

ich habs versucht aber irgendwie hat es nicht funktioniert mit dem Nullen der Felder :frowning: Wobei ich es gerne über ein Makro umsetzen möchte. Das ganze Blatt ist weitgehend geschützt und die Anwender sollen nur Strg+a drücken :smile:

Besten Gruß
Wander

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ich habs versucht aber irgendwie hat es nicht funktioniert mit
dem Nullen der Felder :frowning: Wobei ich es gerne über ein Makro
umsetzen möchte. Das ganze Blatt ist weitgehend geschützt und
die Anwender sollen nur Strg+a drücken :smile:

Hallo Wander,

„irgendwie hat es nicht funktioniert“ ist absolut nicht hilfreich um dir helfen zu können.
Welcher Code klappte nicht, kam ein Debuggerfehler, welcher, in welcher Codezeile, was passierte/passierte nicht im Blatt ist hilfreicher.

Wenn deine Zellen im geschützten Bereich liegen so zeichne dir ein Makro auf während du ein Blatt schützt, dann ein makro während du einem Blatt den Schutz wieder nimmst.
Schau dann in die Hilfe zu protect und unprotect, dann kannst du ggfs. den Schutz mit in meinen Code einbauen falls nötig.

„a“ würde ich nicht als Tastenkombi nehmen da schon belegt, nimm nen anderen Buchstben, aber ist deine Sache, natürlich kannst du auch „a“ nehmen.

Laß die Prozedur Einmalig mal durchlaufen.

Option Explicit

Sub Klear()
Range(„MeinName“).ClearContents
End Sub

Sub Einmalig()
ActiveWorkbook.Names.Add Name:=„MeinName“, RefersTo:="=Tabelle1!$A$1:blush:A$2,Tabelle1!$C$2:blush:D$6"
Application.MacroOptions Macro:=„Klear“, HasShortcutKey:=True, ShortcutKey:=„a“
End Sub

Gruß
Reinhard

Hallo Reinhard,

ich habe das Makro nach meine Bedürfnisse angepasst.
Das Makro bleibt bei Range(„MeinName“).ClearContents mit Laufzeitfehler 1004 stehen.

Option Explicit

Sub Klear()
Range(„MeinName“).ClearContents
End Sub

Sub Einmalig()
ActiveWorkbook.Names.Add Name:=„MeinName“, RefersTo:="=Tabelle1!$B$2:blush:B$4,Tabelle1!$B$9:blush:C$14",Tabelle1!$B$16:blush:C$28",Tabelle1!$B$30:blush:C$33",Tabelle1!$B$35:blush:C$39",Tabelle1!$B$41:blush:C$45",Tabelle1!$B$9:blush:C$14",Tabelle1!$B$47:blush:C$59"
Application.MacroOptions Macro:=„Klear“, HasShortcutKey:=True, ShortcutKey:=„a“
End Sub

Besten Gruß
Wander

ich habe das Makro nach meine Bedürfnisse angepasst.
Das Makro bleibt bei Range(„MeinName“).ClearContents mit
Laufzeitfehler 1004 stehen.

Hallo Wander,

das passiert z.B. wenn das Blatt geschützt ist.

Gruß
Reinhard

Grüezi Wander

ich habs versucht aber irgendwie hat es nicht funktioniert mit
dem Nullen der Felder.

Hmmm, das hilft mir nicht gerade weiter, wenn ich dir helfen sill/soll… :frowning:

*Was genau* hast Du versucht?
*Wie genau* hast Du es getan?

*Was genau* ist dann geschene - oder eben nicht?

Was genau verstest Du unter ‚Nullen‘ - Inhalte löschen oder eien '00 reinschreiben?

:frowning: Wobei ich es gerne über ein Makro

umsetzen möchte. Das ganze Blatt ist weitgehend geschützt und
die Anwender sollen nur Strg+a drücken :smile:

STRG+A ist eben falsch - da wird das ganze Blatt markiert - und bloss weil ‚VBA-Makro‘ draufsteht iste es noch lange nicht ‚besser‘…

Du sollst nach dem Erstellen des benannten Bereiches dessen Namen im Namsnsfels im DropDown anklicken und dann mit ‚LÖSCHEN‘ die Inhalte der Zellen entfernen. Dabei dürfen diese natürlich nicht geschützt sein, aber dann könnten deine User ja auch keine Daten eingeben… :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Wander

Wobei ich es gerne über ein Makro
umsetzen möchte. Das ganze Blatt ist weitgehend geschützt und
die Anwender sollen nur Strg+a drücken :smile:

Ach ja, da fällt mir noch ein:

Vielleicht erstellst Du besser eine Vorlage (*.xlt), welche der User dann jeweils für eine neue Berechnung wieder aufruft.
Dann sind alle Zellen leer und er kann sauber von vorne beginnen.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hoi Reinhard,

leider passiert es auch wenn ich den Schutz wegnehme :frowning:

Option Explicit

Sub Klear()
=> Gelb Range(„MeinName“).ClearContents
End Sub

Sub Einmalig()
=> Rot ActiveWorkbook.Names.Add Name:=„MeinName“, RefersTo:="=Tabelle1!$B$2:blush:B$4,Tabelle1!$B$9:blush:C$14",Tabelle1!$B$16:blush:C$28",Tabelle1!$B$30:blush:C$33",Tabelle1!$B$35:blush:C$39",Tabelle1!$B$41:blush:C$45",Tabelle1!$B$9:blush:C$14",Tabelle1!$B$47:blush:C$59"
Application.MacroOptions Macro:=„Klear“, HasShortcutKey:=True, ShortcutKey:=„z“
End Sub

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

=> Rot ActiveWorkbook.Names.Add Name:=„MeinName“,
RefersTo:="=Tabelle1!$B$2:blush:B$4,Tabelle1!$B$9:blush:C$14",Tabelle1!$B$16:blush:C$28",Tabelle1!$B$30:blush:C$33",Tabelle1!$B$35:blush:C$39",Tabelle1!$B$41:blush:C$45",Tabelle1!$B$9:blush:C$14",Tabelle1!$B$47:blush:C$59"
Application.MacroOptions Macro:=„Klear“, HasShortcutKey:=True,
ShortcutKey:=„z“

Hallo Wander,

das wurde aber schon bei der Eingabe rot da Fehler in der Zeile sind.
Schmeiß mal die überflüssigen Gänsefüßschen raus.
Der VB-Editor will
RefersTo="=a,b,c,d,e,f"
du gibst aber ein:
RefersTo="=a,b",c",d",e,f"

Gruß
Reinhard

Hoi Reinhard,

die überflüssige Zeichen habe ich entfernt.

Option Explicit

Sub Klear()
Range(„MeinName“).ClearContents
End Sub

Sub Einmalig()
ActiveWorkbook.Names.Add Name:=„MeinName“, RefersTo:="=Tabelle1!$B$2:blush:B$4,Tabelle1!$B$9:blush:C$14,Tabelle1!$B$16:blush:C$28,Tabelle1!$B$30:blush:C$33,Tabelle1!$B$35:blush:C$39,Tabelle1!$B$41:blush:C$45,Tabelle1!$B$9:blush:C$14,Tabelle1!$B$47:blush:C$59"
Application.MacroOptions Macro:=„Klear“, HasShortcutKey:=True, ShortcutKey:=„z“
End Sub

Jetzt erhalte ich den Laufzeitfehler 1004.
Die Methode ´Range´ für das Objekt _Global ist fehlgeschlagen.

Besten Gruß
Wander

Jetzt erhalte ich den Laufzeitfehler 1004.
Die Methode ´Range´ für das Objekt _Global ist
fehlgeschlagen.

Hallo Wander,

hmmh, das Malro Einmalig hast du laufen gelassen?

Ich habe jetzt deinen Code so wie er in deinem letzten Beitrag steht getestet, ich krieg da keinen Fehler.

Mache eine Kopie deiner Mappe,
lösch alles was nicht gebraucht wird.
Letztlich braucht man ja zum Testen nur paar Einträge im benannten Bereich und zur Kontrolle paar Einträge in paar anderen Zellen.

Wenn dann der Fehler immer noch kommt lade mal die Kopie hoch mit FAQ:2861
Welche Excelversion hast du, falls du das noch nicht sagtest?

Gruß
Reinhard

Hoi Reinhard,

ich nutze die Version 2003.

Ich habe jetzt eine Weile rumgetestet. Wenn ich Excel starte und das Makro teste in einer neuen Umgebung, funktioniert es.

Ich stehe im Wald :frowning:

  • ich habe mehrere Blätter und davon - bis auf 2 - die meisten Blätter ausgeblendet (das testweise Einblenden brachte auch keine Lösung)
  • auf anderen Blätter wird mit einem SVERWEIS zugegriffen

Besten Gruß
Wander

Hallo Wander,

was hindert dich daran mal eine Beispielmappe wie beschrieben hochzuladen?

Gruß
Reinhard

Hoi Reinhard,
ich musste zuerst noch etwas einrichten :smile:
http://rapidshare.com/files/204134661/werweiswas.xls

Besten Gruß
Wander

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

http://rapidshare.com/files/204134661/werweiswas.xls

Hallo Wander,

dein Blatt heißt Berechnung und nicht Tabelle1, dementsprechend muß auch der Code sein.

Der nachfolgende Code funktioniert problemlos in deiner Mappe.

Ich habe nun ein Testproblem. Du hast da Verknüpfungen zu anderen mappen drin und diese mappen habe ich nicht, also gibt es deshalb Fehlermeldungen in den Zellen.
Jetzt kann ich nicht abschätzen ob dein Originalcode wegen dieser Fehlermeldungen bei mir nicht läuft oder aus anderen Gründen.

Nimm halt meinen Code und erweitere den Code Zug um Zug um weitere Zellbereiche.
Also erst
Bereich = „=Berechnung!$B$2:blush:B$4“
dann
Bereich = „=Berechnung!$B$2:blush:B$4,Berechnung!$B$9:blush:C$14“
usw.
Tritt ein fehler auf, wirfste den neuen Bereich raus und nimmst den nächsten dazu. Danach weißt du genau welche Zellenbereiche Ärger machen
das Ganze machst du in deiner Originaltabelle.
Teile das dann hier mit, mit der Angabe was denn genau in den Fehlerbereichen drinsteht, Formel, Wert, Fehlermeldung…

Gruß
Reinhard

Sub Klear()
Range(„MeinName“).ClearContents
End Sub

Sub Einmalig()
Dim Bereich As String
'bereich="=Berechnung!$B$2:blush:B$4,…
Bereich = „=Berechnung!$B$2:blush:B$4“
ActiveWorkbook.Names.Add Name:=„MeinName“, RefersTo:=Bereich
Application.MacroOptions Macro:=„Klear“, HasShortcutKey:=True, ShortcutKey:=„z“
End Sub

Hoi Reinhard,

natürlich habe ich bei mir den Namen des Blattes abgeändert nach meine Bedürfnisse :smile:

Der neue Code von Dir bewegt aber etwas, wenngleich - merkwürdigerweise - nicht bei allen Feldern.

B2-B4 wird gelöst.
B30-C33 wird gelöst.
B35-B39 wird gelöst.

An Hand Deiner Bemerkung habe ich dann alle Zugriffe auf andere Blätter und Formeln komplett gelöst. Das brachte keine Besserung.

Ich vermute, dass es eine Sache der Feldformattierung ist und teste weiter :smile:

Nächtlichen Gruß
Wander

Hallo Wander,

Der neue Code von Dir bewegt aber etwas, wenngleich -
merkwürdigerweise - nicht bei allen Feldern.

B2-B4 wird gelöst.
B30-C33 wird gelöst.
B35-B39 wird gelöst.

davon habe ich nix. Was ist der Unterschied zwischen den Zellen die gelöscht werden und jenen die nicht gelöscht werden.
Fehlermeldung kommt keine mehr.

So richtig einfach machste es aber den Helfern nicht, mag ja sein daß ihr da in HH gern angelt um damit den Fischmarkkt zu bestücken, aber es macht wenig Laune dir immer wieder die Würmer aus der nase zu ziehen was denn so auf deinem PC abläuft.

Dabei kümmert sich einer der besten Vba-Kenner um dich, leider bringst du es nicht fertig dein Problem so zu präsentieren daß er es lösen kann.
Nein, garantiert nicht ich, ich meine damit Thomas.

So wie ich den ganzen Thread sehe kostet es ihn nur 2 Stunden das problem zu lokalisieren. Das wäre ja schon ein sehr hilfreicher Schritt.
Okay, in den 2 Stunden ist schon eine 01:55 lange Hafenrundfahrt mitbei:smile:

Ich meine das Ernst, ein Fehler der laufend auftritt ist ein guter Fehler, den können andere nachstellen und beheben.
Ein Fehler der nur scheinbar willkürlich ab und zu auftritt ist schon heftig und so wie bei dir nicht aus der Ferne zu lösen weil man den fehler nicht selbst erzeugen kann um dann nach Möglichkeiten suchen kann um ihn zu beseitigen.
Man muß dazu also vor Ort sein bzw. die Originaldatei haben

Gruß
Reinhard

An Hand Deiner Bemerkung habe ich dann alle Zugriffe auf
andere Blätter und Formeln komplett gelöst. Das brachte keine
Besserung.

Ich vermute, dass es eine Sache der Feldformattierung ist und
teste weiter :smile:

Nächtlichen Gruß
Wander