Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1376to1380
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

letzte belegte Zelle aus...

letzte belegte Zelle aus...
14.08.2014 19:44:06
walter
Guten Abend,
ich möchte gern in der Datenbank die letzte belegte Zelle
finden, dann eine Zeile runter und dann in Spalte A soll der kopierte
Wert eingesetzt werden.
Das Problem, es kann möglich sein das die letzte belegte Zelle in eine
der Spalten F bis H möglich ist.
Dim wbh As String
wbh = ActiveWorkbook.Name
With ActiveCell
' MsgBox .Address
.Copy
End With
Windows("Datenbank.xlsm").Activate
hiermit gehts es nicht:
ActiveSheet.Cells(Rows.Count, "F:H").End(xlUp).Offset(1, 1).PasteSpecial Paste:=xlPasteValues
mfg
walter mb

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte belegte Zelle aus...
14.08.2014 19:59:16
Hajo_Zi
Hallo Walter,
MsgBox Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row

Fehlermeldung
14.08.2014 20:05:01
walter
Hallo Hajo,
mit der Zeile wird die nur die 5 angezeigt.
Hiermit wollte ich in die Sheet reinkopieren, kommt
Fehlermeldung.
ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
mfg
walter mb

AW: Fehlermeldung
14.08.2014 20:07:06
Hajo_Zi
Hallo Walter,
die 5 ist die letzte belegte Zeile also Cells(loletzte+1,1).....
ich habe die Zahl jetzt auf eine Variable geschrieben.
Gruß Hajo

Anzeige
AW: letzte belegte Zelle aus...
14.08.2014 20:07:59
Beverly
Hi Walter,
versuche es mal so:
Dim lngLetzte As Long
If IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count) > _
IIf(IsEmpty(Cells(Rows.Count, 7)), Cells(Rows.Count, 7).End(xlUp).Row, Rows.Count) Then _
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count, 6).End(xlUp).Row, Rows. _
Count)
If IIf(IsEmpty(Cells(Rows.Count, 8)), Cells(Rows.Count, 8).End(xlUp).Row, Rows.Count) >  _
lngLetzte _
Then lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 8)), Cells(Rows.Count, 8).End(xlUp).Row, Rows. _
Count)


Anzeige
Hallo Hajo und Karin
14.08.2014 20:42:48
walter
Hallo zusammen,
Hajo, könntest Du mir den die Zeile so erweitern ohne MSG und das
dann die aktive Zelle in Spalte A eine Zelle runter und der Wert dort
reinkopiert wird.
Hallo Karin,
dann wo der Courser vorher stand, steht er auch nach Ausführung des Makros.
mfg
walter mb

AW: Hallo Hajo und Karin
14.08.2014 21:03:59
Beverly
Hi Walter,
was willst du damit sagen: "dann wo der Courser vorher stand, steht er auch nach Ausführung des Makros." ?


Hallo Karin
14.08.2014 21:11:12
walter
Hallo Karin,
wenn ich vorher in der Datenbank war und z.B in C3 war,
dann geh ich zurück wo ich die Daten raushole und starte das Makro.
Nun steht der Course wieder in C 3 also keine Reaktion.
mfg
walter mb

Anzeige
AW: keine Leerzeile im Bereich
14.08.2014 22:40:45
Ewald
Hallo Walter,
wenn es keine Leerzellen im Bereich F:H gibt (in einer der Spalten muß was stehen)
kannst du folgendes verwenden.
vergebe in der Datentabelle einen Namen als Beispiel "Datbe"
als Verweis folgende Formel eingeben

=BEREICH.VERSCHIEBEN(Tabelle1!$F$1;0;0;ANZAHL2(Tabelle1!$F$1:$H$1000);3)
um zu überprüfen ob bis zur letzten Zeile angezeigt wird
Strg + G drücken und unter Verweis "Datbe" eingeben.
Stimmt die Letzte Zeile kannst du dies in deinem Makro verwenden
zum Testen zunächst
ActiveSheet.Cells(Range("Datbe").Rows.Count + 1, 1).Select
Jetzt sollte die Zelle in Spalte A mit der richtigen Zeile markiert sein.
Wenn das in Ordnung ist dann das Select durch dein Paste ersetzen.
Gruß Ewald

Anzeige
Leider Fehler
15.08.2014 09:41:09
walter
Hallo Ewald,
Laufzeitfehler 1004
Die Methode Range für das Objekt ist fehlgeschlagen.
mfg Walter mb

AW: Hallo Karin
14.08.2014 22:40:47
Beverly
Hi Walter,
und was hat das nun mit der Ermittlung der letzten belegten Zeile im Spaltenbereich F:H zu tun? Welche Reaktion bleibt aus?


AW: Hallo Karin
14.08.2014 23:18:07
Ewald
Hallo,
@Karin
es soll wohl die Zelle wo er gerade eingefügt hat,die aktive Zelle sein.
@Walter
was passiert denn wenn du in Spalte A reinkopiert hast, gibst du in den Spalten F-H etwas ein.
wenn nicht und du startest das Makro nochmal wird der Wert in Spalte A überschrieben.
Um dies zu verhindern muß der Bereich Spalte A bis Spalte H auf die letzte Zeile überprüft werden.
Gruß Ewald

Anzeige
AW: Hallo Karin
15.08.2014 07:54:50
Walter
Guten Morgen,
genau das was Ewald geschrieben hat.
Gruß
Walter mb

AW: Hallo Karin
15.08.2014 08:06:54
Beverly
@Ewald,
das erklärt aber nicht, was das für ein Problem mit sich bringt, wenn der Cursor noch in der selben Zelle steht. Das zumindest geht weder aus Walters Codeschnipsel hervor noch aus seiner Erklärung - zumindest nicht für einen Außenstehenden, der den genauen Tabellenaufbau nicht kennt.


Kopie unter letzte belegte Zelle
15.08.2014 00:30:56
Erich
Hi Walter,
schau dir das hier mal an:

Sub Walter()
Dim rngAct As Range
Dim lngLetzte As Long
Dim wbh As String                ' wird hier nicht gebraucht
wbh = ActiveWorkbook.Name        ' wird hier nicht gebraucht
Set rngAct = ActiveCell
Workbooks("Datenbank.xlsm").Activate
With ActiveSheet                 ' das ist das (zufällig) gerade aktive Blatt
lngLetzte = Application.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, _
.Cells(.Rows.Count, 7).End(xlUp).Row, _
.Cells(.Rows.Count, 8).End(xlUp).Row) + 1
.Cells(lngLetzte, 1) = rngAct.Value       ' überträgt nur den Wert
' oder
rngAct.Copy .Cells(lngLetzte, 1)          ' überträgt auch Formel und Formate
End With
End Sub
Der Cursor wird dabei nicht bewegt - der steht irgendwo auf dem aktiven Blatt in Datenbank.xlsm.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
hallo zusammen
15.08.2014 08:40:23
Walter
Guten Morgen zusammen,
leider kann ich erst später die Beispiele testen.
Werde Euch selbstverständlich informieren.
MfG
Walter mb

Erich / Danke auch an Hajo, Karin+ Ewald -)
15.08.2014 09:48:34
walter
Hallo Erich,
so klappt es:
Dim rngAct As Range
Dim lngLetzte As Long
Set rngAct = ActiveCell
'Workbooks("-Rg.Datenbank.xlsm").Activate
Windows("- Rg. Datenbank.xlsm").Activate
With ActiveSheet ' das ist das (zufällig) gerade aktive Blatt
lngLetzte = Application.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, _
.Cells(.Rows.Count, 7).End(xlUp).Row, _
.Cells(.Rows.Count, 8).End(xlUp).Row) + 1
.Cells(lngLetzte, 1) = rngAct.Value ' überträgt nur den Wert
' oder
''' rngAct.Copy .Cells(lngLetzte, 1) ' überträgt auch Formel und Formate
End With
danke !!!
mfg walter mb

Anzeige
AW: Erich / Danke auch an Hajo, Karin+ Ewald -)
15.08.2014 12:57:54
Ewald
Hallo Walter,
den Fehler kann ich nicht nacgvollziehen.
Bei mir läuft folgendes Makro einwandfrei
Sub andereMappe()
Dim rngAct As Range
Set rngAct = ActiveCell
Windows("Areas.xlsm").Activate
Sheets("Tabelle1").Activate
ActiveSheet.Cells(Range("Datbe").Rows.Count + 1, 1).Value = rngAct.Value
End Sub
das setzen des Sheets habe ich vorgenommen, weil meine Mappe mehrere Tabellen hat.
Du hast auch noch nicht erwähnt,was passiert wenn das Makro einen Wert eingetragen hat.
Wenn das Makro ein zweites Mal gestartet wird, überschreibt es den ersten Eintrag, weil durch die leeren Zellen in den Spalten F-H keine Zeilenerhöhung stattfindet.
Gruß Ewald

Anzeige
Hallo Ewald
15.08.2014 16:07:23
walter
Hallo,
ActiveSheet.Cells(Range("RgDaten").Rows.Count + 1, 1).Value = rngAct.Value
bleibt stehen wieder mit der gleichen Fehlermeldung.
Obwohl die richtige Zelle in Spalte A selectiert wird.
gruß
walter mb

AW: Hallo Ewald
15.08.2014 19:44:49
Ewald
Hallo Walter,
das ist schon merkwürdig,
trage mal was in die Zelle in Spalte A etwas ein und füge im Makro mal zwei Msgboxen ein.
MsgBox ActiveSheet.Cells(Range("RgDaten").Rows.Count + 1, 1).Address(0, 0)
MsgBox ActiveSheet.Cells(Range("RgDaten").Rows.Count + 1, 1).Value
nun sollten dir die Zelladresse und das Value angezeigt werden.
schau auch mal ob Rgdaten richtig ist, nicht das es RngDaten heißt.
Gruß Ewald

Anzeige
Leider noch...
15.08.2014 19:55:40
walter
Hallo Ewald,
herzlichen Dank für Deine Mühe.
Aber leider ist immer noch Laufzeitfehler 1004.
Dateinamen sind auch i.o.
gruß
walter mb

AW: letzte belegte Zelle aus...
15.08.2014 19:15:22
Adis
hALLO
ich weiss nicht ob das Problem inzwischen gelöst wurde?
Hier noch ein Makro Variante über For Next Schleife
Es gibt noch eine Wanrmeldung falls die gefundene letzte Zelle in Spalte A schon belegt ist.
Ich weiss nicht ob das erforderlich ist. Falls Nein diese Zeilen löschen
Sub SpalteF_bisH_LastCell_finden()
Dim AZeile, EZeile, Zeile, ok    'Anf-End Zeile
Sheets("Tabelle1").Select
AcAdr = ActiveCell.Address    'Cursor retten
AZeile = Cells(65536, 1).End(xlUp).Row + 1
'Schleife für Spalte F-H letzte Zelle finden
For i = 6 To 9
Zeile = Cells(65536, i).End(xlUp).Row + 1
If Zeile > EZeile Then EZeile = Zeile
Next i
Range(AcAdr).Select  'Cursor zurücksetzen
'Warnung wenn gefundene Zelle in Spalte A bereits belegt ist !!
If AZeile > EZeile Then
ok = MsgBox("Zeile " & EZeile & "  in Spalte A ist bereits belegt!" _
& Chr(10) & "Werte in freie  -Zelle " & AZeile & "-  schreiben?", vbOKCancel)
If ok = vbCancel Then Exit Sub
EZeile = AZeile   'Endzeile = Anf-Zeile Spalte A
End If
'Ab hier Kopierprogramm ....
Cells(EZeile, 1).Select    '** dient nur zum Test
End Sub
Gruss Adis

Ja, aber herzlichen Dank !!! -)
15.08.2014 19:38:29
walter
Hallo Adis,
herzlichen Dank.
Habe das Beispiel vo Erich genommen,
Danke.
mfg
walter mbv

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige