In Excelblatt Formeln löschen aber die Werte bleiben

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Eigentlich müsst die Fehlermeldung doch schon kommen, wenn Du der Variablen eine Wert zuweist!!!
Überprüfe nochmal die Schreibweise genau, oder gib einfach mal nur tab ein und drücke dann STRG & Leertaste und lasse Dir von der Intellisense anzeigen, "was da ist".
Steht die Definition denn auch im gleichen Modul bzw. in derselben Sub?

UND:
Mit z.B.:

Selection.Copy
Sheets(tabelleName1).Range("A1").PasteSpecial xlPasteValues

kannst Du GLEICH nur die Werte in die neue Tabelle einfügen.

Das funktioniert soweit ganz gut. Ideal wäre es wenn es gleichzeitig auch die Formate übernimmt. Das ganze soll so aussehen wie im Orginalblatt, eben nur ohne Formeln. Das ist als besondere Form des Speicherns gedacht.

Also tausend Dank und vielleicht hast du ja noch ne Idee.

Gruß Monkee

0
@Monkee

Dann einfach:

Selection.Copy
With Sheets(tabelleName1).Range("A1")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
End With

und vielleicht noch als Zugabe (;o) ein:

Application.CutCopyMode = False

als letzte Zeile?

0
@Oubyi

Mit deiner Variante und meiner erfundenen(Makrorecorder) die selben Resultate. Zahlen; Muster und Rahmen alles i.O. Nur die Spaltenbreite und die Zeilenhöhe sind immer noch auf Standard. Das mit der Zeile am Ende einfügen habe ich nicht verstanden.

Sorry wenn ich nerve, haste noch nee Idee

gruß Monkee

Selection.Copy

Sheets(tabelleName2).Range("A1").PasteSpecial xlPasteValues
Sheets("MIOS FFO").Activate
Range("A1:K47").Activate
Selection.Copy
Sheets(tabelleName2).Range("A1").PasteSpecial xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
0
@Monkee

Wenn Du die Zeile als letzte einfügst, wird die "Ameisenstraße" vom Kopieren zurückgesetzt. (Die nervt mich nämlich immer).
Und wegen der Spaltenbreite sollte es so klappen (Ich hoffe Du hast eine aktuelle Excelversion, denn ich fürchte in den alten (2003 und älter) gabe es die Funktion noch nicht, zumindest war sie mir (noch) nicht aufgefallen):

.....
Selection.Copy
Sheets(tabelleName2).Range("A1").PasteSpecial xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets(tabelleName2).Range("A1").PasteSpecial xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Klappt es?

0
@Oubyi

Mit deiner Hilfe haben wir das erledigt. Super Danke

Gruß Monkee

0

usedrange hat nicht die Eigenschaft value, die haben nur ihre Elemente, die Zellen. Also:

**dim c

For each c in usedrange

c.value = c.value

next**

VBA erkennt den richtigen Variablentyp selbsttätig und legt ihn fest.
Ich hab das jetzt zwar nicht ausprobiert, wenn sich usedrange aus Teilbereichen zusammensetzen kann, könnte es Probleme geben: c ist die Untereinheit von usedrange, und da streht, glaube ich, nichts anderes zur Wahl. (c kann beliebig heissen, zB Zelle oder Wrzlbrmpf)
Hieße es: For EACH c IN WORKBOOK, wäre die Einheit das (Arbeits-?)Blatt (vielleicht auch das Blatt, weiß nicht so genau. Also Sheet oder Worksheet. Bei NAMES ist es der Einzelname NAME usw.

Kürzer geht das Entfernen von Inhalten mit

usedrange.ClearContents

(Du willst ja nur die .Formats behalten, wenn ich Dich richtig verstanden habe.

wahrscheinlich braucht usedrange ein übergeordnetes Objekt, also zB Worksheets("Blattname").Usedrange oder activesheet.usedrange
Ohne dieses Stammobjekt sieht VBA nur ein Wort, das es als Variable "versteht" und das als solche nicht definiert ist.
Betrifft auch meine Schleife:
For each c in activesheet.usedrange
im Übrigen würde ich Dir anstatt .select standardmäßig .activate empfehlen:

.select zerstört nämlich evtl bestehende Auswahlen:
bei Blättern einen ggf bestehenden Gruppenmodus,
bei Zellen evtl größere Markierungen.
.activate lässt dagegen Auswahlen bestehen, du kannst mit Selection weitermachen bzw wenn du Dich auf die soeben bearbeitete Zelle weiterhin beziehen willst, mit Activecell.

0
@Iamiam

erstmal tausend Dank für deine Hilfe. Leider bekomme ich das so wie du vorschlägst nicht hin. Ständig kommt die Fehlermeldung Varible nicht definiert. Ich habe die Vermutung, das usedrang wahrscheinlich nur auf Seitenebene finktioniert und nicht innerhalb eines Moduls.

Gruß Monkee

0
@Monkee

bei mir funktioniert -nur zur Demo- die zeile
ActiveSheet.UsedRange.Select
einwandfrei.
Nur
UsedRange.Select

liefert dagegen die von Dir beobachtete Meldung.
Oder doch Rechtschreibung, Du schreibst in Deiner Bemerkung oben usedrang ? Also ohne e am Ende? Da wäre VBA sehr verschnupft!

0
@Iamiam

oder hat Du ("tabellename1") nicht in Anführungszeichen gesetzt, so wie oben im Codebeispiel??

0
@Iamiam

Leider kann ich das jetzt nicht mehr nachvollziehen da ich mich in den Ratschlag von OUBIY festgebissen habe. Trotzdem tausend dank für deine Geduld.

Gruß Monkee

0

Excel VBA automatisches Zellen Springen beschleunigen / optimieren

Hallo liebe Community,

ich habe mir ein Makro gebastelt, mit dem ich mithilfe von 3 Commandbuttons Fehlercodes in eine Tabelle eintragen kann. Der Button trägt dabei einen Wert innerhalb dieser Tabelle ein und springt dann in die nächste Zelle damit dort z.B. ein anderer Fehlercode eingetragen werden kann. Damit das ganze im Kreis läuft habe ich "Sprunngmarken" eingebaut- die Navigation funktioniert super- nur ist das ganze durch die active und select Befehle sehr langsam.

Die Frage wäre, wie man das ganze eleganter lösen könnte um die Navigation zu beschleunigen?

Anbei der Code, der in einem der Buttons steht:

Private Sub CommandButton1_Click()

With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With

ActiveCell.Value = "VA+" ActiveCell.Offset(0, 1).Select Dim Adresse As String 'Zellensprung Beginn'

Adresse = ActiveCell.Address

Select Case Adresse Case Is = "$G$26" Range("B27").Select

    Case Is = "$G$27"
        Range("B28").Select
    Case Is = "$G$28"
        Range("B29").Select
     Case Is = "$G$29"
        Range("B30").Select
        
         Case Is = "$G$30"
        Range("H26").Select
    
      Case Is = "$M$26"
        Range("H27").Select
        
        Case Is = "$M$27"
        Range("H28").Select
    
    
       Case Is = "$M$28"
        Range("H29").Select
    
          Case Is = "$M$29"
        Range("H30").Select
        
        Case Is = "$M$30"
        Range("N26").Select
        
    Case Is = "$S$26"
        Range("N27").Select
        
        Case Is = "$S$27"
        Range("N28").Select
        
        Case Is = "$S$28"
        
        Range("N29").Select
    
     Case Is = "$S$29"
        Range("N30").Select
    
     Case Is = "$S$30"
        Range("T26").Select
        
        Case Is = "$Y$26"
        Range("T27").Select
        
          Case Is = "$Y$27"
        Range("T28").Select
    
      Case Is = "$Y$28"
        Range("T29").Select
    
    Case Is = "$Y$29"
        Range("T30").Select
        
             Case Is = "$Y$30"
        Range("Z26").Select
        
        Case Is = "$AE$26"
        Range("Z27").Select
        
        Case Is = "$AE$27"
        Range("Z28").Select
        
        Case Is = "$AE$28"
        Range("Z29").Select
        
    Case Is = "$AE$29"
        Range("Z30").Select
      
    Case Else:
        ActiveCell.Select
        
End Select 'Zellensprung Ende'

With Application .ScreenUpdating = True .EnableEvents = True .Calculation = xlCalculationAutomatic End With

End Sub

...zur Frage

Excel VBA Fehler '1004' "Anwendungs- oder objektdefinirter Fehler" Was tun?

Mein Programm Prüft ob in einer bestimmten Zelle eine Stadt steht und kopiert dann aus "Diverses" eine bestimmte Range. Nur leider erscheint immer der Laufzeitfehler '1004' Anwendungs- oder objetdifinirter Fehler. Kann mir da jemand vieleicht Helfen?

Private Sub CommandButton1_Click()

If Cells(9, 4) = "Düsseldorf (3885)" Then

  Sheets("Diverses").Select
  Sheets("Diverses").Range(L2, L8).Select //Fehler in der Zeile
  Selection.Copy
 
  Sheets("IT Banf").Select
  Sheets("IT Banf").Range(A35, A41).Select
  ActiveSheet.Paste
 
  Sheets("Diverses").Select
  Sheets("Diverses").Range(L9, L13).Select
  Selection.Copy
  
  Sheets("IT Banf").Select
  Sheets("IT Banf").Range(C35, A39).Select
  ActiveSheet.Paste


End If


End Sub
...zur Frage

Exif-Daten durch Excel(VBA)?

Hallo, ich habe eine Datenbank mit Fotos in Excel erstellt. Jetzt möchte ich aber, dass das Datum das Datum der Aufnahme ist, also das Datum, das in den Exif-Daten der Bilder angegeben ist. Ich habe die Funktion .DateTimeOriginal gefunden, aber habe gelesen, dass diese Funktion nicht in VBA arbeitet, da sie aus einer anderen Sprache, VB .NET, ist und in Visual Basic Express angewendet werden kann. Gibt es andere Möglichkeiten die Exif-Daten rauszuleiten durch VBA ?

...zur Frage

beim kopieren von Zellen plötzlich nicht mehr leer

In Tabelle 1 in den Spalten Z:AB habe ich 1800 Redewendungen zu stehen. Wobei nicht jede Zelle mit Inhalten belegt ist. Dies hängt von meiner Eingabe ab. Ich gebe das Wort "Tisch" ein dann werden in den Spalten Z:AB alle Datensätze die das Wort Tisch enthalten angezeigt. Alle anderen sind leer. Mit dem Makro Übersetzung kopiere ich die Spalten Z:AB in die Tabelle 2. Spalte B:D. Dort sind sämtliche Zellen ohne Text leer. In Tabelle 4 A1 gebe ich ein =Tabelle2!B6 und ziehe das bis A1800. Nun der Efekt. in einigen Zellen, die leer sein sollten, steht eine Null. Die stört mich da ich an Hand der Spalte A dann die Leerzeilen ausblende, damit nur noch die Zeilen angezeigt werden, die auch Text besitzen. Nun meine Frage: Wie kommt es , das eine leere Zelle in der Tabelle 2 plötzlich in der Tabelle 4 mit einer Null belegt ist. Sämtliche Zellen sind mit Text formatiert.

Sub deutsch_polnische_Übersetzung() ' ' deutsch_polnische_Übersetzung Makro

'Übersetzen
    Sheets("Tabelle1").Select
    Columns("Z:AB").Select
    Selection.Copy
    Sheets("Tabelle2").Select
    Columns("B:D").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    Range("B1").Select
    
    Sheets("Tabelle4").Select
    Range("a1").Select
End Sub

Hat jemand ne Idee

Gruß Monkee

...zur Frage

Zellen mit gleichem Inhalt pro Spalte automatisch verbinden ?

Hallo Community, möchte gerne alle Zellen gleichen Inhalts pro Spalte automatisch verbinden lassen (Inhalte müssen, wie bei Excel üblich nur einmal erhalten bleiben). Später soll also der Konfernzname, das Datum und der Ort nur noch einmal pro Konferenz auftauchen. Die Teilnehmer und ihre Beiträge könnte man dann zwar auch noch verbinden, aber hier müssten natürlich die ganzen Zellinhalte erhalten bleiben (was Excel üblicherweise nicht macht). Ist wahrscheinlich nur mit VBA möglich oder? Danke im Vorraus

Bild siehe Anhang

...zur Frage

Werte aus Tabelle mit Makro archivieren?

Hallo Zusammen, ich habe mir ein Makro aufgezeichnet, welches Werte aus einer Tabelle in ein anderes Tabellenblatt kopiert. Die Werte in der Ursprungstabelle ändere ich aber ständig und ich will, dass beim aktivieren des Makros, die zuvor kopierten Werte nicht überschrieben werden sondern neben den bereits "archivierten" Werten eingefügt wird. So sieht das Makro bis jetzt aus:

Sub test() ' test Makro Range("C5:D19").Select Selection.Copy Sheets("Tabelle1").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Tabelle2").Select Range("A7:B8").Select Application.CutCopyMode = False Selection.Copy Sheets("Tabelle1").Select Range("A18").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Tabelle2").Select Application.CutCopyMode = False Range("C7:C19").Select Selection.ClearContents Range("C7").Select Sheets("Tabelle1").Select Range("D2").Select Sheets("Tabelle2").Select End Sub

Problem ist, dass die alten Werte in dem neuen Tabellenblatt immer überschrieben werden. Könnt Ihr mir eine Funktion nennen, damit die Werte nicht überschrieben werden, sondern bei jedem mal ausführen des Makros die Werte in eine neue Spalte kopiert werden.

Vielen Dank im Voraus. Grüße Stephan

...zur Frage

Was möchtest Du wissen?