AW: vba tabellenwerte in neue tabelle kopieren
06.06.2013 10:31:18
Klaus
hallo excel cracks
Hallo Djego!
ich bin absoluter vba beginner und möchte versuchen mir in nächster zeit ein paar vba kenntnisse anzueignen.
Dann bist du in der Herber.de Community schonmal goldrichtig.
Da du selbst schreibst dass du lernen willst, werde ich dir nur Anhaltspunkte liefern und keine Komplettlösungen.
ich verfüge über eine excel tabelle ("tabelle1") mit daten (inkl. formeln) in den zellen b1:t67 und möchte die in dieser tabelle enthaltenen informationen als werte (aber mit dem selben format wie in tabelle 1) in eine andere tabelle ("tabelle2") der gleichen excel datei kopieren.
Die Codezeilen dazu sind:
sheets("Tabelle1").Range("B1:T67").Copy
sheets("Tabelle2").Range("B1:T67").PasteSpecial xlPasteValues
sheets("Tabelle2").Range("B1:T67").PasteSpecial xlPasteFormats
erste Zeile kopiert den benannten Bereich
zweite Zeile fügt den Inhalt ein, referenziert auf eine andere Tabelle
dritte Zeile fügt die Formate ein, ebenfallst referenziert.
(Hier könnte man noch besser referenzieren, aber erstmal einfach gehalten! Später mehr)
falls möglich sollte die tabelle2 aber schreibgeschützt sein, die enhalteten informationen sollten nur durch das makro verändert werden können und nicht manuell.
Um in schreibgeschützten Tabellen Code auszuführen, einfach den Schreibschutz per VBA aufheben, den Code ausführen, dann den Schreibschutz wieder setzen. Im Beispiel gehe ich davon aus, dass du KEIN Passwort hast:
sheets("Tabelle2").Unprotect
[Code der ausgeführt werden soll]
sheets("Tabelle2").Protect
da das von mir geschriebene makro wirklich nur rudimentär ist, schreibe ich es hier nicht rein. ich wäre euch dankbar für eine kurze erklärung wie ich das makro schreiben kann.
Beide deine Fragen habe ich mit Anhaltspunkten beantwortet. Probier mal aus, beide Antworten zu einem Makro zusammen zu führen!
auch wäre ich sehr dankbar für tipps wie ich mich in das thema vba reinarbeiten kann mit null vorwissen.
kleine Aufgaben, wie deine oben genannte, immer erstmal mit dem Makrorekorder ausführen. Von Anfang an, den Rekordercode SOFORT durchoptimieren, sonst gewöhnst du dir einen schlampigen Stil an.
In kurz: in der Zelle B2 soll "Hallo Welt" stehen
Wenn der Rekorder schreibt:
Sub Macro3()
' Macro3 Macro
Range("D34").Select
ActiveWindow.LargeScroll Down:=-1
Range("B2").Select
ActiveCell.FormulaR1C1 = "Hallo Welt"
Range("B3").Select
End Sub
Dann schaust du dir den Code an und stellst fest: das meiste ist unnötig. Erstmal alles rauswerfen was nicht mit B2 zu tuen hat:
Sub Macro3()
Range("B2").Select
ActiveCell.FormulaR1C1 = "Hallo Welt"
End Sub
und dann gleich angewöhnen, auf SELECT kann eigentlich immer verzichtet werden!
Sub Macro3()
Range("B2").FormulaR1C1 = "Hallo Welt"
End Sub
(das kann man noch weiter verkürzen, aber erstmal genug)
In länger: lies dieses hervorragende Tutorial von Peter Haserodt:
http://www.online-excel.de/excel/singsel_vba.php?f=78
Von der Seite ist auch alles andere lesenswert! Aber: nicht zu viel auf einmal!
Wilkommen in der Welt von VBA,
Klaus M.vdT.