<pre class="brush:vb;">Moin,
ich möchte gerne eine Tabelle per CommandButton sortieren, die ein DropDown-Menüs enthält.
Zum besseren Verständnis vielleicht nochmal mein gesamtes VOrhaben erläutert.
Über eine UserForm wird in einem Tabellenblatt eine neue Zeile eingefügt (Zeile 3). Über die UserForm werden dann vier Spalten angesprochen (G bis J).
In G3 kommt z.B 1.1, 2.2, 3.1, danach soll im Endeffekt auch sortiert werden.
In H3 kommt eine Beschreibung zu G3
In I3&J3 kommen dann die DropDown-Menüs, aber nur wenn in der UserForm dafür ein Häkchen gesetzt wurde.
Anschließend wird mit dem Command Button "einsetzen" der Befehl durchgeführt. Mit dem CommandButton "sortieren" soll das anschließend sortiert werden.
Das Problem ist nun, dass die Spalten G und H sortiert werden, die DropDown-Menüs aber an Ort und Stelle bleiben, obwohl sie mit im Sortierbereich enthalten sind.
Da nicht alle Zeilen ein DropDown-Menü enthalten sollen ist das ein Problem.
Meine VBA-Künste sind überschaubar, dementsprechend sind auch mein Code aus, aber ich hoffe mir kann trotzdem geholfen werden.
Gruß
Deswraka.
</pre><div>
</div>
Private Sub cmd_einsetzen_click()
Dim Nummer, Name As String
'Parameter
Nummer = txt_Nummer
Name = txt_Name
With Worksheets("EBewertung")
.Cells(3, 7).EntireRow.Insert
.Cells(3, 7).EntireRow.ClearFormats
.Columns("G:H").NumberFormat = "@"
End With
'Neue Zeilen einfügen unf Format bestimmen
If Opt_Liste = True Then
With Worksheets("EBewertung").Range("I3:J3").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="1,2,3,4"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
With Worksheets("EBewertung")
.Cells(3, 7).Value = Nummer
.Cells(3, 8).Value = Name & vbLf 'Zeilenumbruch
End With
'In die Felder 3,G/H in den Tabellenblatt EBwertung werden die Variabeln Name und Nummer eingetragen
End Sub
Private Sub cmd_sortieren_click()
Dim SourceRange, fillrange As Range
Dim Ende As Long
With Worksheets("EBewertung").Sort
.SetRange Range("G3:J250")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With 'Sortiert EBewertung im Bereich G3 bis J250
End Sub
|