Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1652to1656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblatt wechsel ???

Tabellenblatt wechsel ?
22.10.2018 09:26:23
klaus
Guten Morgen zusammen,
ich verstehe das nicht !
Sheets("Auftrag").Range("D10").Select
kommt Laufzeitfehler 1004 Range objekt konnte ...
so klappt es :
'Sheets("Auftrag").Select
'Range("D10").Select
komisch...
gruß
klaus k

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt wechsel ?
22.10.2018 09:40:38
Daniel
Hi
der Select-Befehl funktioniert immer nur im aktiven übergeordneten Objekt.
dh du kannst eine Range immer nur im aktiven Tabellenblatt selektieren
du kannst ein Tabllenblatt immer nur in der aktiven Mappe selektieren
deswegen brauchst du bei Select zwei-drei schritte, wenn du Blattübergreifend selektieren willst.
(drei dann, wenn du auch noch auf eine andere Mappe wechseln willst)
in einem Schritt geht's mit Application.Goto Sheets("Auftrag").Range("D10")
wobei man das mit Select eigentlich nicht braucht, da man in der VBA-Programmierung darauf verzichten sollte.
statt
Sheets("Auftrag").Select
Range("D10").Select
Selection.Value = "Hallo Welt"

kannst du immer auch schreiben
Sheets("Auftrag").Range("D10").Value = "Hallo Welt"

wodurch der Code nicht nur kürzer und übersichtlicher, sondern auch schneller und weniger fehleranfällig wird.
außerdem flackert der Bildschirm nicht mehr.
auch wenn der Recorder da Select aufzeichnet, im Code sollte man es nicht verwenden.
Gruß Daniel
Anzeige
Danke Daniel für die Erklärung dazu !!! -)
22.10.2018 09:57:23
klaus
Darf ich nochwas Fragen ?
22.10.2018 10:03:13
klaus
Hallo,
ich habe folgendes Makro:
Worksheets("Daten").Range("a6").Select
letztezeile = Cells(Rows.Count, 1).End(xlUp).Row
letztezeile = ActiveCell.Offset(2, 0).Select
'MsgBox ActiveCell.Address ' mit Dollar Zeichen
MsgBox ActiveCell.Address(False, False) ' ohne Dollar Zeichen
Dim laz
laz = ActiveCell
Sheets("Auftrag").Range("D10") = "Hallo Welt"
' jetzt wieder zurück:
ActiveCell = laz.Select
geht nicht...
gruß Klaus k
das ist jetzt nicht dein Ernst, oder?
22.10.2018 10:10:38
Daniel
Doch weil...
22.10.2018 10:40:41
klaus
Hallo Daniel,
ja weil ich in der anderen Tabelle Daten kopieren möchte und diese in
aktuelle Datei einfügen.
gruß
klaus k
Anzeige
AW: Doch weil...
22.10.2018 11:01:32
Daniel
naja, wenn ich dir schreibe, dass
Worksheets("Daten").Range("a6").Select
nicht funktioniert, dann wundere ich mich schon, warum ich das dann bei deiner Nachfolgefrage in der ersten Codezeile lesen muss.
Du solltest das, was man dir schreibt, auch umsetzen.
ansonsten ist "Geht nicht" als Fehlerbeschreibung ungefähr so brauchbar wie "Machs besser" als Antwort.
du solltest schon beschreiben, was du mit deinem Code überhaupt erreichen willst und wie sich dieses "Geht nicht" bemerkbar macht.
Dh gibt's ne Fehlermeldung? Wenn ja, welche und in welcher Zeile tritt sie auf?
Wenn nein, was macht der Code tatsächlich, im Gegensatz zu dienem eigentlichen Wunsch?
Gruß Daniel
Anzeige
Sorry Daniel...
22.10.2018 11:24:43
klaus
Hallo Daniel,
sorry für meine unklare Beschreibung.
Hier:
Ich möchte in der "Daten"Tabelle in der Spalte A, angefangen ab Zelle A6, die
erste freie Zelle ermitteln.
Dann soll aus der Tabelle "Auftrag" Zelle D11 der Wert bzw. den Text in die
Tabelle "Daten" der freien Zelle eingesetzt haben.
gruß
klaus k
trotzdem stellt sich die Frage...
22.10.2018 11:36:11
Daniel
... warum du die Zeile Worksheets("Daten").Range("a6").Select in den Code schreibst, wenn ich dir doch kurz vorher erklärt habe, dass diese Codezeile nicht funktioniert und wie man es besser machen kann.
Es macht wenig sinn, wenn du das, was ich ich dir erkläre, nicht umsetzt.
Gruß Daniel
Anzeige
Sorry habe doch ausversehen das...
22.10.2018 12:29:29
klaus
Hallo Daniel,
sorry hatte ausversehen das "alte" kopiert !
Eingesetzt.
gruß
klaus k
AW: Sorry habe doch ausversehen das...
22.10.2018 14:32:07
Daniel
wie sieht denn das neue aus?
Gruß Daniel
Anbei die Daten
22.10.2018 17:03:24
klaus
Hallo Daniel,
anbei das Makro, funktioniert.
Application.Goto Sheets("Daten").Range("A6")
letztezeile = Cells(Rows.Count, 1).End(xlUp).Row
letztezeile = ActiveCell.Offset(2, 0).Select
HIER sollte rein, das die leere Zelle gemerkt wird !
Application.Goto Sheets("Auftrag").Range("D11")
JETZT wieder zur Tabelle zu der Zelle die gemerkt wurde !
und den Wert bzw. Text einfügen.
Sorry nochmal,
gruß
klaus k
Anzeige
So gehts aber ...
22.10.2018 18:49:36
klaus
Hallo Daniel,
so klappt es, wenn ich aber von D10:D15 kopieren möchte klappt es nicht !
Kann man das kürzer zusammenfassen ?
Application.Goto Sheets("Daten").Range("A6")
letztezeile = Cells(Rows.Count, 1).End(xlUp).Row
letztezeile = ActiveCell.Offset(2, 0).Select
Dim aktBlatt
Dim MeineZ As Range
Set aktBlatt = ActiveSheet
Set MeineZ = ActiveCell
Application.Goto Sheets("Auftrag").Range("D11")
ActiveCell.Copy
aktBlatt.Select
MeineZ.Select
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
gruß klaus k
Anzeige
Ergänzung ?
22.10.2018 18:53:43
klaus
Guten Abend,
habe geändert und klappt:
Application.Goto Sheets("Auftrags").Range("D11:D14")
Range("D11:D14").Copy
aktBlatt.Select
MeineZ.Select
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
geht es Kürzer oder zusammengefasst?
gruß
klaus k
AW: Ergänzung ?
22.10.2018 21:31:19
onur
Warum so umständlich?
Mehr brauchst du nicht:

Dim z
For z = 6 To 10000
If Sheets("Daten").Cells(z, 1) = "" Then
Sheets("Auftrag").Range("D11:D14").Copy Sheets("Daten").Cells(z, 1)
Exit For
End If
Next z

Super aber in Zelle D11 steht eine Formel..
22.10.2018 22:08:25
klaus
Guten Abend Onur,
super klappt, bis auf Zelle D11 in Auftrag, steht eine Formel.
Deshalb dürfen nur die Werte kopiert werden !
Geil das es so kurz ist !!!
gruß
klaus k
Anzeige
AW: Super aber in Zelle D11 steht eine Formel..
23.10.2018 08:55:57
Hajo_Zi
nach next
Sheets("Daten").Range("D14")=Sheets("Auftrag").Range("D14")
und in Schleife
Sheets("Auftrag").Range("D11:D13").Copy Sheets("Daten").Cells(z, 1)

Gruß Hajo
AW: Super aber in Zelle D11 steht eine Formel..
23.10.2018 09:37:02
klaus
Guten Morgen Hajo,
leider klappt es nicht.
Die Zellen D10 bis D14 sollen kopiert werden.
In D11 steht eine Formel, da sollte nur der Wert kopiert werden.
gruß
klaus k
AW: Ergänzung ?
23.10.2018 09:40:57
Daniel
Hi
wie gesagt, Select oder auch Application.Goto braucht man eigentlich nie.
Man schreibt den vollständigen Zellbereich (dh incl Sheet und ggf auch Workbook) direkt vor den entsprechenden Zellbereich.
Sheets("Auftrags").Range("D11:D14").Copy
Sheets("Daten").Cells(Rows.Count, 1).End(xlup).Offset(2, 0).pasteSpecial xlpastevalues
Der Fehler in deinem Codeversuch dürfte sein, dass ActiveCell.Copy verwendet hast statt Selection.Copy. Die ActiveCell ist aber immer nur eine einzige Zelle, auch wenn die Selection mehrere Zellen umfasst.
Gruß Daniel
Anzeige
Guten Morgen Daniel soweit..
23.10.2018 10:07:24
klaus
Guten Morgen Daniel,
super.
Das Einzige, ab Zeile A6 in Spalte A, soll geprüft werden.
Sheets("Daten").Range("A6").Cells(Rows.Count, 1).End(xlup).Offset(2, 0).pasteSpecial xlpastevalues
mit Range geht nicht !
gruß klaus k
Alles GUT --))
23.10.2018 10:12:59
klaus
Guten morgen an ALLE,
besonders an Daniel und Hajo.
Habe dies geändert:
.Offset(1)
jetzt klappt es !
DANKE
gruß
klaus k

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige