Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

letzte belegte Zelle aus...

Betrifft: letzte belegte Zelle aus... von: walter mb
Geschrieben am: 14.08.2014 19:44:06

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

  

Betrifft: AW: letzte belegte Zelle aus... von: Hajo_Zi
Geschrieben am: 14.08.2014 19:59:16

Hallo Walter,

MsgBox Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row

GrußformelHomepage


  

Betrifft: Fehlermeldung von: walter mb
Geschrieben am: 14.08.2014 20:05:01

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


  

Betrifft: AW: Fehlermeldung von: Hajo_Zi
Geschrieben am: 14.08.2014 20:07:06

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


  

Betrifft: AW: letzte belegte Zelle aus... von: Beverly
Geschrieben am: 14.08.2014 20:07:59

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)

GrußformelBeverly's Excel - Inn


  

Betrifft: Hallo Hajo und Karin von: walter mb
Geschrieben am: 14.08.2014 20:42:48

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


  

Betrifft: AW: Hallo Hajo und Karin von: Beverly
Geschrieben am: 14.08.2014 21:03:59

Hi Walter,

was willst du damit sagen: "dann wo der Courser vorher stand, steht er auch nach Ausführung des Makros." ??


GrußformelBeverly's Excel - Inn


  

Betrifft: Hallo Karin von: walter mb
Geschrieben am: 14.08.2014 21:11:12

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


  

Betrifft: AW: keine Leerzeile im Bereich von: Ewald
Geschrieben am: 14.08.2014 22:40:45

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


  

Betrifft: Leider Fehler von: walter mb
Geschrieben am: 15.08.2014 09:41:09

Hallo Ewald,
Laufzeitfehler 1004
Die Methode Range für das Objekt ist fehlgeschlagen.

mfg Walter mb


  

Betrifft: AW: Hallo Karin von: Beverly
Geschrieben am: 14.08.2014 22:40:47

Hi Walter,

und was hat das nun mit der Ermittlung der letzten belegten Zeile im Spaltenbereich F:H zu tun? Welche Reaktion bleibt aus???


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Hallo Karin von: Ewald
Geschrieben am: 14.08.2014 23:18:07

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


  

Betrifft: AW: Hallo Karin von: Walter mb
Geschrieben am: 15.08.2014 07:54:50

Guten Morgen,
genau das was Ewald geschrieben hat.
Gruß
Walter mb


  

Betrifft: AW: Hallo Karin von: Beverly
Geschrieben am: 15.08.2014 08:06:54

@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.


GrußformelBeverly's Excel - Inn


  

Betrifft: Kopie unter letzte belegte Zelle von: Erich G.
Geschrieben am: 15.08.2014 00:30:56

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


  

Betrifft: hallo zusammen von: Walter mb
Geschrieben am: 15.08.2014 08:40:23

Guten Morgen zusammen,
leider kann ich erst später die Beispiele testen.
Werde Euch selbstverständlich informieren.
MfG
Walter mb


  

Betrifft: Erich / Danke auch an Hajo, Karin+ Ewald -) von: walter mb
Geschrieben am: 15.08.2014 09:48:34

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


  

Betrifft: AW: Erich / Danke auch an Hajo, Karin+ Ewald -) von: Ewald
Geschrieben am: 15.08.2014 12:57:54

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


  

Betrifft: Hallo Ewald von: walter mb
Geschrieben am: 15.08.2014 16:07:23

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


  

Betrifft: AW: Hallo Ewald von: Ewald
Geschrieben am: 15.08.2014 19:44:49

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


  

Betrifft: Leider noch... von: walter mb
Geschrieben am: 15.08.2014 19:55:40

Hallo Ewald,
herzlichen Dank für Deine Mühe.
Aber leider ist immer noch Laufzeitfehler 1004.
Dateinamen sind auch i.o.

gruß
walter mb


  

Betrifft: AW: letzte belegte Zelle aus... von: Adis
Geschrieben am: 15.08.2014 19:15:22

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


  

Betrifft: Ja, aber herzlichen Dank !!! -) von: walter mb
Geschrieben am: 15.08.2014 19:38:29

Hallo Adis,
herzlichen Dank.
Habe das Beispiel vo Erich genommen,
Danke.

mfg
walter mbv


 

Beiträge aus den Excel-Beispielen zum Thema "letzte belegte Zelle aus..."