Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1368to1372
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

Schleife über Spalten

Schleife über Spalten
01.07.2014 11:23:55
Carsten

Hallo alle zusammen,
ich würde gerne die Zeile 17 Spalte für Spalte durchgehen und wann immer da ein Wert drin steht, den Bereich 18:5000 als Named Range definieren, wobei der Name in Zeile 17 steht.
Jetzt ist mein Code allerdings absolutes Harakiri. Könntet ihr mir da helfend zur Hand gehen?

Sub Namen()
Dim intCol As Integer
intCol = 1
If Not IsEmpty(Cells(17, intCol)) Then
Do While Len(Cells(18, intCol).Formula) > 0
With Sheets("Tabelle2")
.Range(.Cells(18, intCol), .Cells(5000, intCol)).Name = .Range(.Cells(17, intCol))
intCol = intCol + 1
End With
Loop
Else
intCol = intCol + 1
End If
End Sub

Grüße,
Carsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife über Spalten
01.07.2014 11:31:28
Hajo_Zi
Hallo Carsten,
ich würde als Name nicht Range benutzen, da die ein Befehl ist.
Den Bereich brauchst Du doch nur einmal definieren, da es immer um die Zeilen 18:5000 geht.
In Deinem Code fehlt If für prüfen der Zelle. und Exit Do falls das erste mal erfüllt.
Zeichne das definierten Namen mit dem Makrorecorder auf.
Gruß Hajo

AW: Schleife über Spalten
01.07.2014 11:41:10
Daniel
Hi
wenn in den Zellen handgeschriebender Text steht, dann so:
Leerzellen werden übersprungen.
Dim Zelle As Range
For Each Zelle In Rows(17).SpecialCells(xlCellTypeConstants, 2)
ThisWorkbook.Names.Add Zelle.Value, Zelle.Offset(1, 0).Resize(4983, 1)
Next
Gruß Daniel

Anzeige
AW: Schleife über Spalten
01.07.2014 11:54:23
Carsten
Hallo ihr beiden,
viele Dank für die Hilfe. Hat super geklappt. Hab es gelöst.
Danke

AW: Schleife über Spalten
01.07.2014 11:52:11
EtoPHG
Hallo Carsten,
Vielleich wäre Seppuku anstelle von Harakiri eine Lösung ;-)
aber vorher:
1. Schraube deinen VBA-Level auf "Kaum..." zurück.
2. Variablen für Spaltenindex immer als LONG definieren.
3. Unreferenzierte Range-Angaben beziehen sich immer auf das aktive Blatt
4. d.h. du prüfst Zellen im aktiven Blatt und nur im With-Konstrukt referenzierst du "Tabelle2"
5. Ein While-Konstrukt ist hier fehl am Platz, besser wäre ein For-Konstrukt
6. Der Code bricht bei der ersten leeren Zelle der Zeile 17 im aktiven Blatt ab.
7. Warum nach einem Abbruch der Spaltenindex noch erhöht wird, bleibt dein Geheimnis.
8. Eine Range hat keine Eigenschaft .Name
9. Das vergeben von Namen kann man mit dem Makrorekorder aufzeichnen.
10. Name kann ein Objekt des Workbook oder des Worksheet sein.
Gruess Hansueli

Anzeige
AW: Schleife über Spalten
01.07.2014 12:07:49
Carsten
Hallo hansueli,
danke für die tipps allerdings ein oder zwei Hinweise von mir:
1. Eine Range hat die eigenschaft .Name, zumindest hat es mit einer hart codierten range a la Range(“A2:A6000“).Name = Range(“A1“) ohne weiteres funktioniert
2. sollte er ja eben nicht abbrechen, sondern die leere Zeile überspringen, was ich auch geschrieben hatte
3. das mit der Prüfung im aktiven Blatt ist alles ok.
Grüße,
Carsten

AW: Schleife über Spalten
01.07.2014 12:25:53
EtoPHG
Hallo Carsten,
Zu
1. Da hast du Recht und ich nehme meine Behauptung 8. zurück
2. Nein, das hast du nirgends erwähnt oder geschrieben.
3. Nein das ist nicht ok. Erkläre den Unterschied zwischen deiner Tabelle2 und irgendeinem anderen Tabellenblatt einer beliebig geöffneten Arbeitsmappe und v.a. was haben diese bezgl. deines Codes, dann miteinander zu tun? Früher oder später muss der Code in die Hosen gehen!
Gruess Hansueli

Anzeige
Carsten, VBA-Gut, kann das stimmen????? owT
01.07.2014 14:32:44
robert

ja owT
01.07.2014 16:09:10
Carsten
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige