Nachdem Ihr mir letzte Woche so toll geholfen habt, habe ich Blut geleckt und mich an die weitere Automatisierung meiner Excel-Datenbestände gemacht.
Jetzt hänge ich wieder fest.
Ich habe eine Arbeitsmappe mit mehreren Blättern.
Jetzt soll per Makro auf einem weiteren angehängten Blatt quasi eine Zusammenfassung mit den wichtigsten Daten aus den anderen Blättern erzeugt werden.
Wie kann ich mir nun die Daten aus den anderen Tabellenblättern ziehen?
Diese Schreibweise ist für VBA nicht ganz korrekt. VBA erwartet für „Cells“ zwar die Angabe einer Spalte, jedoch muß an der Stelle, an der Du als Spalte „A“ angegeben hast auch eine Zahl vom Daten-Typ Long stehen. Das bedeutet, Du mußt für Spalte „A“ eine 1 schreiben, für Spalte „B“ eine 2 usw.
Die korrekte Syntax für Deinen obigen Code muß dann lauten
Falsche Fährte gelegt, sorry…
Vielen Dank für Deine Antwort, Carsten!
Diese Schreibweise ist für VBA nicht ganz korrekt. VBA
erwartet für „Cells“ zwar die Angabe einer Spalte, jedoch muß
an der Stelle, an der Du als Spalte „A“ angegeben hast auch
eine Zahl vom Daten-Typ Long stehen. Das bedeutet, Du mußt für
Spalte „A“ eine 1 schreiben, für Spalte „B“ eine 2 usw.
Die korrekte Syntax für Deinen obigen Code muß dann
lauten
Cells(ZZeile, 1) = Tabelle1.Cells(AZeile, 3)
Es funktioniert inzwischen sowohl mit Buchstaben, als auch Zahlen für die Spalten-Bezeichnung.
Der Hase lag woanders im Pfeffer.
Ich habe das Tabellenblatt nämlich in „Gesamtliste“ umbenannt, hier aber der Einfachheit wegen „Tabelle1“ gepostet… 'tschuldigung!
Im VBA-Editor ist mir dann aufgefallen, daß das Blatt trotzdem noch „Tabelle1“ heißt und nur in Klammern dahinter „Gesamtliste“ steht.
Ergo:
falsch:
Gibt es irgendeine Möglichkeit, daß ich im Code „Gesamtliste“ statt „Tabelle1“ schreiben kann? Ist kein Muß, wäre aber schön, weil’s übersichtlicher ist.
Ich habe das Tabellenblatt nämlich in „Gesamtliste“ umbenannt,
hier aber der Einfachheit wegen „Tabelle1“ gepostet…
Da Umbenennen der Sheets ist immer lästig. Daher folgender Vorschlag (nur das Prinzip)
Ändere den codeNamen des „Masters“ zb ,in master, dann
master.cells.copy
for i=1 to activeworkbook.count
if activeworkbook.sheets(i).codename „master“ then
activeworkbook.sheets.cells.pastespecial …
end if
next
Hab hier kein Excel am Start, könnte also noch etwas „Schreibfehler“ haben…
Der Hase lag woanders im Pfeffer.
Ich habe das Tabellenblatt nämlich in „Gesamtliste“ umbenannt,
hier aber der Einfachheit wegen „Tabelle1“ gepostet…
'tschuldigung!
Das macht ja nichts.
Im VBA-Editor ist mir dann aufgefallen, daß das Blatt trotzdem
noch „Tabelle1“ heißt und nur in Klammern dahinter
„Gesamtliste“ steht.
Gibt es irgendeine Möglichkeit, daß ich im Code „Gesamtliste“
statt „Tabelle1“ schreiben kann? Ist kein Muß, wäre aber
schön, weil’s übersichtlicher ist.
Ja, das ist kein Problem. Wenn Du im Visual-Basic-Editor bist, markiere im Projekt-Explorer den Eintrag „Tabelle1 (Gesamtliste)“. Falls das Eigenschaftenfenster noch nicht geöffnet ist, öffne dies bitte über das Menü „Ansicht“ > „Eigenschaftenfenster“. Dort findest Du für Tabellenblätter die Eigenschaft
Name
und die Eigenschaft
(Name)
Die zweite in Klammern kannst Du dann auch umbenennen in „Gesamtliste“ und die Tabelle danach im Code einfach mit diesem Namen ansprechen.
Codename ändern
Hallo Carsten,
ich hatte glaub noch nie das Eigenschaftsfenster bei einem Blatt auf, deshalb danke dir wie das manuell geht den Codenamen zu ändern, wußte ich nich.
Da mich das ineteressiert wie das mit Vba geht, denn die Hilfe zu Codename sagt, es ginge nicht zur Laufzeit, fragte ich woanders nach und K.Rola hat mir die Lösung gegeben:
Sub CodeName\_ändern()
Dim s As Long, CName As String, wks As Worksheet, wb As Workbook
Set wb = ThisWorkbook
For Each wks In wb.Worksheets
CName = wks.CodeName
s = s + 1
ThisWorkbook.VBProject.VBComponents(CName).Properties(5).Value = "KRola" & s
Next
End
End Sub
Und, wenn ich ihr Vba-Wissen sehe und meins, ich könnte heulen, da brauche ich noch Jahrzehnte für
Egal, Lebbe geht weiter und irgendwann wirds auch Sommer und wir stöhnen unter der Hitze
Andrerseis soll es auch mit Risiken behaftet sein den Codenamen zu ändern, ich bekam diesen Link, habe ihn aber noch nicht durchforstet: http://www.xlam.ch/soscq/fragen.htm#%DCbersicht
Gruß
Reinhard
Ich habe mir den Link jetzt nicht angesehen. Meiner Meinung ist das Ändern des CodeName eines Objektes zur Laufzeit Unsinn. Selbst wenn es möglich ist, fällt mir absolut kein Grund ein, warum man das machen sollte. Danach erhält man doch bestimmt eine Fehlermeldung nach der anderen („Objekt erforderlich“).
Ich habe mir den Link jetzt nicht angesehen. Meiner Meinung
ist das Ändern des CodeName eines Objektes zur Laufzeit
Unsinn. Selbst wenn es möglich ist, fällt mir absolut kein
Grund ein, warum man das machen sollte. Danach erhält man doch
bestimmt eine Fehlermeldung nach der anderen („Objekt
erforderlich“).
Hallo Carsten,
diese eine Linkseite lohnt sich immer.
Ich wollte ja auch nur wissen ob und wie man den Codenamen ändern kann.
Ich habe es an einer neuen leeren Datei getestet, gab da keine Fehler, aber mit anderen Codes oder Funktionen kann es natürlich crashen
Gruß
Reinhard