Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
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
Erste leere Spalte finden
08.12.2013 17:31:24
Timo
Hallo zusammen,
ich brauche wieder mal Eure Hilfe, da ich am Verzweifeln bin.
Ich habe ein Tabellenblatt, bei dem ALLE Spalten ausgeblendet sind.
Die Daten werden über UserForms in das Tabellenblatt geschrieben.
Das funktioniert soweit super.
Ich möchte nun in Zeile 9 des Tabellenblattes die erste leere Spalte finden, um dort einen Wert reinzuschreiben.
Die erste leere Spalte suche ich mit:
Dim Spalte As Long
Spalte = ThisWorkbook.Worksheets("Daten").Cells(9, 16384).End(xlToLeft).Offset(0, 1).Column
oder mit:
Dim Spalte As Long
Spalte = ThisWorkbook.Worksheets("Daten").Cells(9, Columns.Count).End(xlToLeft).Column + 1
Das funktioniert super, wenn alle Spalten auf dem Tabellenblatt eingeblendet sind.
Sobald die Spalten aber ausgeblendet sind, wird die erste freie Spalte nicht gefunden.
Der Wert wird stattdessen in eine andere freie Spalte geschrieben, aber eben nicht in die erste freie.
Gibt es noch eine andere Möglichkeit, nach der ersten freien Spalte in Zeile 9 zu suchen, die auch bei ausgeblendeten Spalten funktioniert?
Vielen Dank und viele Grüße
Timo

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Erste leere Spalte eines Bereichs
08.12.2013 18:47:51
Erich
Hi Timo,
eine Möglichzkeit:

Option Explicit
Sub aaTest()
MsgBox FirstFreeCol(Rows(9))
End Sub
Function FirstFreeCol(rngC As Range) As Long
Dim sAdr As String
sAdr = "(" & rngC.Address(0, 0) & ")"
FirstFreeCol = Evaluate("MIN(IF(ISBLANK" & sAdr & ",COLUMN" & sAdr & "))")
End Function
Die Idee von Sepp habe ich gerade hier gefunden:
https://www.herber.de/forum/archiv/1244to1248/1245735_Spalte_kopieren_Werte_in_naechste_freie_Spalte.html#1245918
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Erste leere Spalte eines Bereichs
08.12.2013 21:56:43
Timo
Hallo Erich,
danke für Deine Hilfe.
Ich habe das Problem so gelöst:
Spalte = ThisWorkbook.Worksheets("Daten").UsedRange.Columns.Count + 1
Das scheint auch bei ausgeblendeten Spalten zu funktionieren.
Hier wird zwar nicht die erste freie Spalte in Zeile 9 gesucht sondern allgemein,
aber damit kann ich leben.
Gruß Timo

besser nicht mit UsedRange
09.12.2013 00:51:47
Erich
Hi Timo,
deine Lösung mit UsedRange ist nicht zu empfehlen. Sie kann sogar dazu führen,
dass eine nichtleere Zelle überschrieben wird.
UsedRange hat ein paar (ganz normale) Eigenschaften, die oft nicht bedacht werden.
1.)
Der Bereich muss nicht in Spalte A anfangen. Wenn in einem Blatt nur die Zellen D9:F9 benutzt sind,
ist UsedRange.Columns.Count = 3
Mit UsedRange.Columns.Count + 1 würde man also Zelle D9 überschreiben.
Das kannst du leicht mit einem neuen Blatt ausprobieren.
2.)
Wenn man in eine Zelle rechts des bisher benutzten Bereichs z. B. ein Datum oder eine Uhrzeit eingibt
und diese dann wieder löscht, erstreckt sich der UsedRange bis zu dieser Zelle,
auch wenn diese Zelle längst leer ist.
Dass die UsedRange-Lösung nicht zu deiner Fragestellung passt, hast du selbst schon geschrieben -
"damit kann ich leben"...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: besser nicht mit UsedRange
09.12.2013 20:01:17
Timo
Hallo Erich,
danke für den Hinweis.
Da der beutzte Bereich in der Tabelle klar strukturiert ist, dürfte da eigentlich nichts passieren.
Aber ich werde die Sache noch einmal ausgiebig testen.
Gruß Timo

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige