Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmen einer Range über eine Eingabe

Forumthread: Bestimmen einer Range über eine Eingabe

Bestimmen einer Range über eine Eingabe
18.10.2024 10:19:53
Marco
Hallo,
ich möchte eine Range im VBA bestimmen, in dem man vorher eine Eingabe tätigt, in der dann zum Beispiel die Spalte "I" definiert wird. Mit der Eingabe "I" soll dann das Makro arbeiten und in seine Range eingeben.
Das Eingabefenster und den Rest habe ich schon, ich benötige nur noch die Zusammenführung der Eingabe in die Range-Komponente.

Sub Sortieren_Artikelstatus()

Dim eingabe As String

eingabe = Application.InputBox(Prompt:="Eingabe der Spalte?", Type:=2)
Range("D2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Datei").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Datei").Sort.SortFields.Add2 _
Key:=Range(eingabe &"3" :eingabe & Cells(Rows.Count, 1).End(xlDown).Row), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"8,9,7,10,6,11,5,12,13", DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Datei").Sort
.SetRange Range("D2:AR" & Cells(Rows.Count, 1).End(xlDown).Row)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmen einer Range über eine Eingabe
18.10.2024 16:11:21
Yal
Hallo Marco,

wenn Du die Zwischenergebnisse Variable zuweist, kannst Du im Lokalfenster (Ansicht, Loklafenster) den Statur der Variablen und Objekte sehen, wenn Du im Schritt-Modus die Makro laufen lässt. So bekommst Du deinen Code im Griff und lernst gleichzeitig eine Menge. u.a. dass die 3 Zeilen Code ab Range("D2").Select überhaupt keine Relevanz haben, da Du
.SetRange Range("D2:AR" & Cells(Rows.Count, 1).End(xlDown).Row)
verwendest.

Dein Code könnte so aussehen:
Sub Sortieren_Artikelstatus()

Dim Eingabe As String
Dim LetzteZeile As Long
Dim rngKey As Range

Eingabe = Application.InputBox(Prompt:="Eingabe der Spalte?", Type:=2)
With Worksheets("Datei")
LetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
Set rngKey = Range(.Cells(3, Eingabe), .Cells(LetzteZeile, Eingabe))
With .Sort
.SortFields.Clear
.SortFields.Add2 Key:=rngKey, SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="8,9,7,10,6,11,5,12,13", DataOption:=xlSortNormal
.SetRange Range("D2:AR" & LetzteZeile)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub


VG
Yal
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige