Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
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

Range("A3:<ende verwendete Spalten>:3).s

Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 19:05:45
Wolle

Hallo,

Ich versuche gerade in Zeile 3 folgendes. Range("A3:Ende verwendete Spalten:3).Select

Nur dieses Ende verwendete Spalten bekomme ich nicht hin.

Außerdem würde ich den Spaltenbuchstaben der lezten verwendeten Spalte noch gerne in einer Variable zur späteren verwendung speichern.

Wie bekomme ich das hin?

Gruß, Wolle

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 19:53:52
Pappawinni
Naja, du brauchst eine Zeichenkette, die eine gültige Adresse darstellt.
Angenommen du hast in Zelle A1 den Buchstaben D
dann liefert das was da

   Range("A3:" & Range("A1").Value & "3").Select
zwischen den Klammern steht "A3:D3"


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:11:35
Pappawinni
Variablen speichern, da könnte man jetzt weit ausholen.
Für diesen Fall:
zunächst solltest du einen Namen erst mal als Variable ausweisen, hier z.B.
Dim strCol as String
String steht für Variablen in denen man Zeichenketten speichern kann.
Dann kannst du dieser Variablen einen Wert zuweisen, z.B.
strCol = "D"
Diese Zeichenkette kannst du dann auch verwenden für
Range("A3" & strCol & "3").Select
das & ist dabei der Operator für eine Verknüpfung von Zeichenketten.


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:17:45
Wolle
Vom Prinzip ist mir das schon klar, ich weiß nur nicht wie ich einen gültigen Wert ermittel der mir dann keinen Fehler auswirft.

Das hier klappt nicht.


LetzteSpalte = Cells(3, Columns.Count).End(xlToLeft).Column
Range("A3:" & LetzteSpalte & "3").Select
Gruß, Wolle


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:25:09
GerdL
Moin
MsgBox Range(Cells(3, 1), Cells(3, Columns.Count).End(xlToLeft)).Address

Gruß Gerd


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:40:13
Wolle
Ja, dass ist schon ein guter Anfang.

Dake dir dafür.

So selektiere ich dann schonmal meine Spalte mit Bezeichnungen.

Range(Range(Cells(3, 1), Cells(3, Columns.Count).End(xlToLeft)).Address).Select
Und wie bekomme ich jetzt nur den Spaltenbuchstaben der letzten Spalte in eine Variable?

Gruß, Wolle


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:43:48
Pappawinni
Ich übergebe an GerdL


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:35:58
Pappawinni
letzteSpalte ist nämlich ein Zahlenwert.
mit

Range(Cells(3, 1), Cells(3, letzteSpalte)).Select
könntest du das z.B. verarbeiten.


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 20:53:52
GerdL
MsgBox Split(Cells(3, Columns.Count).End(xlToLeft).Address, "$")(1)
Der Spaltenbuchstabe ist nicht erforderlich. Du kannst die Column-Eigenschaft der ermittelten Zelle in Cells einsetzen.

Gruß Gerd


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 21:02:37
Wolle
Ich muss im nächsten Step eine Schleife bauen die mir jede zweite Reihe von Spalte A bis letzte Spalte markiert und den Hintergrund einfärbt.

Das ganze natürlich bis last rows count.

Brauche ich dafür auch nicht den Buchstaben?
Wie das mit dem einfärben geht weis ich, wegen der Schleife muss ich noch ein wenig basteln, aber bei dem Rest bin ich noch unsicher.

Gruß, Wolle


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 21:13:34
Pappawinni
Denkst du ernsthaft, dass das dem Niveau des Fragestellers entspricht ?
Ich bin gespannt, was du ihm noch alles hinknallst, von dem der Fragesteller auch nicht einen Hauch versteht.


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 21:27:35
Wolle
An Pappawinni,

es ist nicht jeder Mensch auf der Welt in Foren zuhause. Es tut mir leid, wenn das Niveau meiner Fragen nicht deinen Vorstellungen entspicht.
Wenn es dich so sehr stört, dann halte dich doch bitte geschlossen und ignoriere mich bitte. Nichts liegt mir ferner als mich mit dir über Sinn oder Unsinn meiner Fragen zu streiten.

Ich habe gerade ein konkretes Problem, welches ich gerne lösen möchte und da ich kein Mnsch bin der regelmäßig programmiert, und ich selber auch unsicher bin wie ich meine Fragen formulieren soll, schreibe ich sie halt so wie es mir möglich ist.

Ich verstehe einfach nicht warum es in Foren immer wieder Menschen gibt, die anstatt zu helfen, lieber rumstänkern.
Du muss ja nichts dazu schreiben.

Und was ich von GerL´s hilfestellungen verstehe oder nicht, soll nicht dein Problem sein. Er hat mir definitiv schon deutlich weitergeholfen und ich bin ein gutes Stück weiter.

Gruß, Wolle


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 21:36:34
GerdL
Hallo,
ich würde es so machen.

Sub Unit()

Range("A:A").Interior.Color = vbYellow
Call Range("A:B").Copy
Call Range("C:XFD").PasteSpecial(Paste:=xlPasteFormats)
Application.CutCopyMode = False


End Sub
"rows.count" hat mit Spalten nichts zu tun. Sind bei dir Reihen nun Spalten oder Zeilen?
Falls du definitiv eine Schleife brauchst, beschreibe bitte die konkrete Aufgabe mit den Zeilen- und/oder Spaltenangaben.

Gruß Gerd




AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 21:53:16
Wolle
Hallo Gerd,

danke für Deine gute Unterstützung.

Reihen sind natürlich Reihen und Spalten sind Spalten.

Im finalen step brauche ich beides.

Ich habe eine Tabelle mit immer gleicher Spaltenanzahl aber mit variabler Reihenanzahl.

Den ersten Step den du mir schon gezeigt hast nutze ich um meine Spaltenüberschriften zu formatieren.
Im zweiten Step muss ich jede zweite Reihe (innerhalb der immer gleichen Spaltenzahl) einfärben(wegen der optischen Unterteilung der einzelnen Reihen).

Habe mal ein Bild vom Endergebnis angehangen zum bnesseren Verständnis.

Userbild

Das ganze muss ich im Monat mehrmals machen.
Bissher musste ich diese Formatierungen immer händich machen.
Das Makro wird mir halt sehr viel Arbeit abnhemen.

Gruß, Wolle und Danke vielmals für deine Hilfe.


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 22:04:21
Pappawinni
Ich hab am Anfang auch immer vergessen "Frage noch offen" zu markieren.
BTW
Du hast bei Range() verschiedene Möglichkeiten
Range("A3:D3")
Range("A3","D3")
Range("A3",Cells(3,4))
damit z.B.
Range("A3", Cells(3, Columns.Count).End(xlToLeft).Address).Select


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 22:07:02
GerdL
Hallo Wolle

Sub Unit2()


    Dim Z As Long
    
    For Z = 5 To Cells(Rows.Count, 1).End(xlUp).Row - 1 Step 2
        Cells(Z, 1).Resize(1, 5).Interior.ColorIndex = 44
    Next


End Sub
Du könntest mit einem formatierten intelligenten Tabellchen (Menü Einfügen--Tabelle) arbeiten.
Die sind standardisiert mit zweifarbigen Zeilen.

Gruß Gerd


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
07.05.2023 00:22:04
Pappawinni
Hallo Gert
Ich frage mich gerade, warum ich hier so oft Cells.Resize statt Range(Cells,Cells) lese
Ist das nur ne Frage der Schreibarbeit ?
also:
Range(Cells(z, 1), Cells(z, 5))
versa
Cells(z, 1).Resize(1, 5)
oder gibt es da noch irgend einen weiteren Vorteil, den ich noch nicht erkannt habe ?
Lesbarkeit, naja, kann man drüber streiten.
Freilich mag es Fälle geben, wo der Range zu oder abnimmt.
Aber das sehe ich hier ja nicht. Der Range bleibt ja konstant groß.


AW: Range("A3:<ende verwendete Spalten>:3).s
07.05.2023 08:51:27
GerdL
Hallo Winni,

das ist eine schlichte Gewohnheit von mir.
in einem With-End With-Block reicht so ein Verweispunkt.


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 22:07:13
Wolle
Eine Sache mus ich noch anpassen.

Ich habe eine Tabelle mit immer gleicher Spaltenanzahl aber mit variabler Reihenanzahl.

Diese Aussage stimmt nicht ganz.

Meine Ursprungsdatei ist eine csv und dort sind leider untereinander verschiedene Bereiche die jeder Bereich für sich eine unterschiedliche Spaltenanzahl hat.
Als erstes unterteile ich die einzelnen Bereiche in unterschiedliche Arbeitsblätter kopiere und dann Formatiere, dadurch hat natürlich jedes Arbeitsblatt ebenfalls eine variable Spaltenanzahl.

Das Unterteilen der Ursprungsdatei habe ich schon hinbekommen, es geht jetzt halt um das Formatieren der einzelnen Blätter.

Hir mal mein bishereiger Code. Ist sicherlich nicht perfekt aber funktioniert soweit wie ich es brauche.


Sub Makro1()
'
' Makro1 Makro
'

'
Dim z, anf, AnzSheets, rng, LetzteSpalte
    anf = 1
    AnzSheets = 1
    For z = anf To 5000
        If Cells(z, 1) = "Gesamt" Then
            Set rng = Range("A1" & ":U" & z)
            rng.Select
            Selection.Copy
            Sheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ActiveSheet.Name = Range("A1").FormulaR1C1
            ActiveSheet.UsedRange.Select
            With Selection.Font
                .Name = "Arial"
                .Size = 11
            End With
            Range("A1").Select
            Selection.Font.Bold = True
            With Selection.Font
                .Name = "Arial"
                .Size = 16
            End With
            Rows("2:2").Select
            Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            ActiveSheet.UsedRange.EntireColumn.AutoFit
            ActiveSheet.UsedRange.Select
            
            '---------Hier kommt der zusätzliche Code zum Formatieren rein----->>>>>>
            
            Sheets(1).Select
            Selection.Delete Shift:=xlUp
            Rows("1:1").Select
            Selection.Delete Shift:=xlUp
            anf = 1
            z = 1
            If Cells(1, 1).Value Like "*tunden*" Then
                z = 5000
                Set rng = Range("A1" & ":U" & ActiveSheet.UsedRange.Rows.Count)
                rng.Select
                Selection.Copy
                Sheets.Add After:=Sheets(Sheets.Count)
                ActiveSheet.Paste
                Application.CutCopyMode = False
                ActiveSheet.Name = "Überstunden"
                ActiveSheet.UsedRange.EntireColumn.AutoFit
                Application.DisplayAlerts = False
                Sheets(1).Delete
                Application.DisplayAlerts = True
            End If
        End If
    Next z
End Sub
Gurß, Wolle


Anzeige
AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 22:24:49
Wolle
Vielen Dank für Deine Hilfe,

ich glaube damit komme ich schonmal einen riesen Schritt weiter.

Gruß, Wolle


AW: Range("A3:<ende verwendete Spalten>:3).s
06.05.2023 21:37:48
Pappawinni
Das Statement war an Gerd gerichtet.
Nicht an dich.
Mach nur weiter..... GerdL löst das bestimmt, ob du das dann verstehst, ist ne andere Frage.

72 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige