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.
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.
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 )
ich habs versucht aber irgendwie hat es nicht funktioniert mit dem Nullen der Felder 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
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 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
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
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
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…
*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?
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
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…
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
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.
leider passiert es auch wenn ich den Schutz wegnehme
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]
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"
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.
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?
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
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