Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
416to420
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
416to420
416to420
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

xlTypeLastCell / erkennen?

xlTypeLastCell / erkennen?
24.04.2004 22:29:18
Erich M.
Hallo EXCEL-Freunde,
mit
mySpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
ermittle ich die Spalte, die in der Tabelle als letzte (rechts) benutzt ist.
Ich habe schon mehrmals im Forum gelesen, dass dies nicht so zuverlässig ist.
Nun geht es mir tatsächlich so, dass er die Spalte wählt, die zwar leer ist, aber
vorher z.B. geleert wurde; unabhängig ob ich das mit "Entf" oder per
VBA mit Cells.Clear mache.
Gibts eine andere Alternative um mit Sicherheit die Spalte zu finden,
die als letzte tatsächlich belegt ist; d.h. wo ein Eintrag vorhanden ist.
Wenn die Zellen leer sind, aber evtl. eine Formatierung enthalten, wäre das
kein Problem.
Besten Dank für eine Hilfe!
mfg
Erich

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: xlTypeLastCell / erkennen?
24.04.2004 22:49:02
K.Rola
Hallo,
Option Explicit

Sub real_lastCell()
Dim c As Range
On Error Resume Next
Set c = Cells.Find("*", after:=[a1], searchdirection:=2)
If Not c Is Nothing Then
MsgBox "Zeile: " & c.Row & Chr(10) & "Spalte: " & c.Column & Chr(10) & "Zelle: " & c.Address(0, 0)
Else
MsgBox "Zelle: A1"
End If
End Sub

Gruß K.Rola
AW: xlTypeLastCell / erkennen?
24.04.2004 23:06:05
K.Rola
Hallo,
nimm besser das:
Option Explicit

Sub real_lastCell()
Dim c As Range
On Error Resume Next
Set c = Cells.Find("*", after:=[a1], LookIn:=xlFormulas, searchdirection:=2)
If Not c Is Nothing Then
MsgBox "Zeile: " & c.Row & Chr(10) & "Spalte: " & c.Column & Chr(10) & "Zelle: " & c.Address(0, 0)
Else
MsgBox "Zelle: A1"
End If
End Sub

Gruß K.Rola
Anzeige
AW: xlTypeLastCell / erkennen?
25.04.2004 08:31:11
Erich M.
Hallo K.Rola,
besten Dank - aber es funktioniert nicht ganz; es wird immer die "unterste Zelle"
angezeigt:
Wenn belegt E31 und H25, dann Ergebnis E31.
Ich habe aber noch was gefunden:

Sub LetzteSpalte()
Dim mySpalte As Integer
mySpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
MsgBox "Die letzte belegte Spalte ist:  " & mySpalte
End Sub

Nur wie kann ich die Spalte als Buchstabe anzeigen lassen und nicht als Zahl ??
Besten Dank nochmal!
mfg
Erich
AW: xlTypeLastCell / erkennen?
24.04.2004 23:11:41
FP
Hallo Erich,
benutze CurrentRegion:

Public

Function GetLastColumn(Optional rng As Range) As Integer
If rng Is Nothing Then Set rng = Cells(1, 1)
GetLastColumn = rng.CurrentRegion.Columns.Count
End Function

Servus aus dem Salzkammergut
Franz
Anzeige
AW: xlTypeLastCell / erkennen?
24.04.2004 23:14:26
K.Rola
Hallo,
das setzt aber voraus, das die daten ein Block sind.
Gruß K.Rola
AW: xlTypeLastCell / erkennen?
24.04.2004 23:21:20
andre
Hallo allerseits,
die Lösung von KRola zeigt nur die letzte Spalte der letzten Zeile oder? Erich suchte aber die letzte Spalte eines mehrzeiligen Bereiches.
Ich habe auch noch eine Variante, benötigt aber A65536 als Hilfszelle:


Sub Makro1()
' Makro1 Makro
' Makro am 24.04.2004 von SchauAn aufgezeichnet
' ISBLANK(R1:R2) bestimmt den Bereich der zu prüfenden Zeilen
    [a65536].FormulaArray = "=MAX(NOT(ISBLANK(R1:R2))*COLUMN(R[1]:R[256]))"
    letztespalte = [a65536]
    [a65536].Delete
    MsgBox letztespalte
End Sub 

     Code eingefügt mit Syntaxhighlighter 2.5



Grüße, André ( andre)



Anzeige
AW: xlTypeLastCell / erkennen?
24.04.2004 23:21:29
andre
Hallo allerseits,
die Lösung von KRola zeigt nur die letzte Spalte der letzten Zeile oder? Erich suchte aber die letzte Spalte eines mehrzeiligen Bereiches.
Ich habe auch noch eine Variante, benötigt aber A65536 als Hilfszelle:


Sub Makro1()
' Makro1 Makro
' Makro am 24.04.2004 von SchauAn aufgezeichnet
' ISBLANK(R1:R2) bestimmt den Bereich der zu prüfenden Zeilen
    [a65536].FormulaArray = "=MAX(NOT(ISBLANK(R1:R2))*COLUMN(R[1]:R[256]))"
    letztespalte = [a65536]
    [a65536].Delete
    MsgBox letztespalte
End Sub 

     Code eingefügt mit Syntaxhighlighter 2.5



Grüße, André ( andre)



Anzeige
AW: xlTypeLastCell / erkennen?
24.04.2004 23:39:13
K.Rola
Hallo,
Erich sucht: mySpalte = Cells.SpecialCells(xlCellTypeLastCell).Column
also die letzte Spalte im Blatt.
Mein Vorschlag liefert die letzte Spalte, letzte Zeile und die Adresse.
Gruß K.Rola
AW: xlTypeLastCell / erkennen?
25.04.2004 08:31:22
andre
Hallo KRola,
hier mal der Unterschied zwischen Erich's myspalte und Deinem code. Bei Erich kommt richtigerweise die Spalte 7 = G, bei Dir nur die Spalte 5 = E. In Erich's Anfrage steht nicht, das er die letzte Spalte der letzten Zeile will. Daten sind nur die drin, die man sieht - unter den MsgBoxes ist auch nichts.
Userbild

Grüße, André ( andre)



Anzeige
AW: xlTypeLastCell / erkennen?
25.04.2004 12:46:37
K.Rola
Hallo,
jetzt hats klick gemacht, du hast Recht.
Gruß K.Rola
AW: xlTypeLastCell / erkennen?
25.04.2004 08:34:11
Erich M.
Hallo Andre,
danke, aber wenn der Bereich nicht direkt verbunden ist, kommt nicht das richtige
Ergebnis. siehe aber meine Antwort an K.Rola. Hab's noch nicht ganz!
mfg
AW: xlTypeLastCell / erkennen?
25.04.2004 09:19:03
andre
Hallo Erich,
das haut schon hin. Du musst nur die Zeilenzahl anpassen. In meinem Beispil schaue ich ja nur in die ersten beiden ISBLANK(R1:R2) Schreibe statt der 2 mal 2000 ...
Den Spaltenbuchstabe bekommst Du so:

Sub SpalteAlsBuchstabe()
MsgBox Spaltenname(7)
End Sub


Function Spaltenname(s As Byte)
Dim a$, b$, N$
If s <= 26 Then
N = Chr(s + 64)
Else
a = Application.WorksheetFunction.RoundUp(s / 26, 0) - 1 + 64
b = s - (Application.WorksheetFunction.RoundUp(s / 26, 0) - 1) * 26 + 64
N = Chr(a) & Chr(b)
End If
Spaltenname = N
End Function


Grüße, André ( andre)



Anzeige
AW: xlTypeLastCell / erkennen?
25.04.2004 09:47:23
Erich M.
Hallo Andre,
das mit den Zeilen habe ich kapiert (nicht genau gelesen!)
Wie bringe ich den "Spaltennamen" in meine zweite MsgBox; das funzt nicht:

Sub LetzteSpalte2()
Dim mySpalte As Integer, Spaltenname As Integer
mySpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
MsgBox "Die letzte belegte Spalte ist:  " & mySpalte
MsgBox Spaltenname(mySpalte)
End Sub


Function Spaltenname(s As Byte)
Dim a$, b$, N$
If s <= 26 Then
N = Chr(s + 64)
Else
a = Application.WorksheetFunction.RoundUp(s / 26, 0) - 1 + 64
b = s - (Application.WorksheetFunction.RoundUp(s / 26, 0) - 1) * 26 + 64
N = Chr(a) & Chr(b)
End If
Spaltenname = N
End Function

Besten Dank nochmal!
mfg
Erich
Anzeige
AW: xlTypeLastCell / erkennen?
25.04.2004 10:06:56
andre
Hallo Erich,
hier ist für jeden was dabei ;-)
1. Dein code: Spaltenname nicht Dimmen, es ist ja keine Variable sondern eine Funktion. Außerdem wäre integer falsch - Du willst ja einen Bichstaben.
2. Mein Code - schreib mal Function Spaltenname(ByVal s As Byte) oder Function Spaltenname(ByVal s As Integer) geht auch. Auf ByVal kommts an. Bei meinem Test ging's auch ohne aber falls es bei Dir ein Problem gibt...

Grüße, André ( andre)



Anzeige
kombiniert!
25.04.2004 11:38:19
Erich M.
Hallo Andre,
habe Deine Function mit der Sub kombiniert und es funzt wunderbar:
Sub LetzteSpalte_var()
Dim mySpalte As Integer, Spaltenname As String, s As Byte
Dim a$, b$, N$
mySpalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
s = mySpalte
If s <= 26 Then
N = Chr(s + 64)
Else
a = Application.WorksheetFunction.RoundUp(s / 26, 0) - 1 + 64
b = s - (Application.WorksheetFunction.RoundUp(s / 26, 0) - 1) * 26 + 64
N = Chr(a) & Chr(b)
End If
Spaltenname = N
MsgBox "Die letzte belegte Spalte ist: " & Chr(10) & Chr(10) & _
" " & mySpalte & " bzw. " & N
End Sub

Code eingefügt mit: Excel Code Jeanie
Also allerbesten Dank für die Unterstützung und noch einen schönen Sonntag
(in der Umgebung Augsburg scheint momentan die Sonne)!!
mfg
Erich
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige