Hallo rotzi,
dann so:
Application.Goto reference:=Cells(ActiveSheet.AutoFilter.Range.Row, 1), Scroll:=True
zu 1. Siehste hab extra gewartet, dass snb was einstellt.
@snb
Du liest auch die Überschriften ein, sollte noch ein Offset(1,0) rein, oder?
Danke Atilla, der Punkt ist gelöst
zu combobox ich habe den code geänder in
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then controlltable.ComboBox1.List = Filter([transpose(if(isblank(snb),"~",snb))], "~", 0)
End Sub
dieser ist in der arbeitsmappe wo die liste ist.
Code:
Private Sub UserForm_initialize()
Pr00.UsedRange.Name = "snb"
ComboBox1.List = Filter([transpose(if(isblank(snb),"~",snb))], "~", 0)
End Sub
dieser in der userform.
da bringt er mit objekt erforderlich
Hallo rotzi,
wenn Deine Tabelle mit der Liste "Pr00" heißt,
dann so:
Code:
Private Sub UserForm_initialize()
Sheets("Pr00").UsedRange.Offset(1, 0).Name = "snb"
ComboBox1.List = Filter([transpose(if(isblank(snb),"~",snb))], "~", 0)
End Sub
Hab das "mit" ohne Überschriften eingearbeitet.
zu 2. noch
Es musste gat nicht so kompliziert sein, wie ich es gezeigt habe.
Es geht natürlich auch wie Carsten es gezeigt und erklärt hat.
In Deinem Fall also:
statt:
Application.Goto reference:=Cells(
2, 1), Scroll:=True
so
Application.Goto reference:=Cells(
7, 1), Scroll:=True
Dein Code für das Befüllen ist natürlich nicht so effektiv gewesen.
Man kann mit einer Schleife arbeiten. Aber bei Dir geht die Schleife bis zur gesamt Anzahl der Zeilen in der Tabelle.
Statt xldown wäre da xlup schon sehr viel vorteilhafter gewesen.
Schön, da sind wir auf der Zielgeraden ...
Ich würde das nun folgendermaßen lösen, damit es keinen doppelten Code gibt:
Hinter der Tabelle:
Code:
'UserForm1 durch den Name Deiner Userform ersetzen ...
Private Sub CommandButton1_Click()
UserForm1.Show vbModeless
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then If isFormLoaded("UserForm1") Then UserForm1.FillMyComboBox
End Sub
Function isFormLoaded(ByVal strName As String) As Boolean
Dim i As Integer, b As Boolean
strName = LCase(strName)
For i = 0 To VBA.UserForms.Count - 1
If LCase(UserForms(i).Name) = strName Then
b = True
Exit For
End If
Next
isFormLoaded = b
End Function
Im Userform:
Code:
Private Sub UserForm_Activate()
FillMyComboBox
End Sub
Public Sub FillMyComboBox()
'Tabelle1 durch Deinen Tabellenname ersetzen:
Sheets("Tabelle1").UsedRange.Offset(1, 0).Name = "snb"
ComboBox1.List = Filter([transpose(if(isblank(snb),"~",snb))], "~", 0)
End Sub
Frage 2 hat sich anscheinend nun auch erledigt ...
Gruß Carsten
Hallo zusammen,
um etwas Verwirrung reinzubringen von mir eine banale Lösung, angelehnt an Deine Versuche:
Code:
'Code im Codemodul der Tabelle
'######################################
Private Sub CommandButton1_Click()
UserForm1.Show vbModeless
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:A86")) Is Nothing Then
If UserForm1.Visible = True Then
UserForm1.ComboBox1.Clear
UserForm_Combo_1_Füllen
End If
End If
End Sub
Und:
Code:
'Code in einem allgemeinen Modul
'###############################
Sub UserForm_Combo_1_Füllen()
Dim Zelle As Range
For Each Zelle In Worksheets("Tabelle1").Range("A2:A86").SpecialCells(xlCellTypeConstants)
UserForm1.ComboBox1.AddItem Zelle.Value
Next
End Sub
und
Code:
'Code in Userform
'##############################
Private Sub UserForm_initialize()
UserForm_Combo_1_Füllen
End Sub
Hi Carsten, da hatten wir die ähnliche Idee.
Deine Umsetzung gefällt.
Hi Atilla,
anscheinend: Ja :D
Einen Widerspruch würde ich bei Dir noch einlegen:
Die Sub zum Befüllen gehört m.E. eindeutig in das Userform.
Dagegen sollte in meinem Beispiel die Funktion 'isFormLoaded' in ein allgemeines Modul ausgelagert werden.
Mal sehen was 'rotzi' (was für ein Name :D :18: ) nun dazu sagt ... :21:
Gruß Carsten
Die Additem Methode ist mir viel zu langsam und aufwändig.
Hallo Atilla,
*yeah*
... und irgendwie geistert bei mir seit diesem Thread der Holzi-Song von den 257ers im Kopf herum.
... "mit ohne" 'Holzi' :05:
Gruß Carsten
:D
@snb:
Das hatten wir doch schon angepasst, oder?
rotzis kopf raucht gleich ab
also ich habe das mal so eingefügt nun sagt er mir bei
Userform.ComboBox1.AddItem item.Value
Objekt erforderlich