Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

2 Fragen, combobox und Autofilter
#11
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?
Gruß Atilla
Antworten Top
#12
Danke Atilla, der Punkt ist gelöst  Heart

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
Antworten Top
#13
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.
Gruß Atilla
Antworten Top
#14
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
Antworten Top
#15
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. Blush
Deine Umsetzung gefällt.
Gruß Atilla
Antworten Top
#16
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
Antworten Top
#17
(23.04.2017, 15:27)DbSam schrieb: Mal sehen was 'rotzi' (was für ein Name :D :18: ) nun dazu sagt ...   :21: 

Hallo Carsten

lies mal hier: http://www.clever-excel-forum.de/thread-...l#pid77663


....und Deinen Widerspruch akzeptiere ich.
Gruß Atilla
Antworten Top
#18
Die Additem Methode ist mir viel zu langsam und aufwändig.


Angehängte Dateien
.xlsb   __modeless userform.xlsb (Größe: 21,08 KB / Downloads: 7)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#19
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?
Antworten Top
#20
rotzis kopf raucht gleich ab Undecided

also ich habe das mal so eingefügt nun sagt er mir bei

Userform.ComboBox1.AddItem item.Value

Objekt erforderlich
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste