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

Werte aus A, nicht mehr I

Werte aus A, nicht mehr I
Wolfgang
Hallo,
versuche, den folgenden Code umzustellen. Irgendetwas mache ich aber falsch. Ich würde gerne erreichen, dass die Daten für die ComboBox1 nicht mehr aus Spalte I, sondern Spalte A genommen werden. Mein gescheiterter Versuch unten, ebenfalls unten der "Original-Code"; Wäre denkbar, dass der Code auch so eingestellt werden kann, dass die TextBox-Daten alphabetisch angezeigt werden?
Danke schon jetzt für die Rückmeldung.
Herzliche Grüße - Wolfgang
mein Versuch:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Sheets("Maßnahmen").Activate
'Range("A1").Select
Sheets("Einstellungen").Activate
Range("A1").Select
'Sheets("Einstellungen").Activate
Worksheets("Einstellungen").ComboBox2 = ""
Worksheets("Einstellungen").ComboBox1 = ""
Worksheets("Einstellungen").ComboBox3 = ""
Worksheets("Einstellungen").ComboBox4 = ""
For s = 2 To Worksheets("Maßnahmen").Range("I65536").End(xlUp).Row
If Worksheets("Maßnahmen").Cells(s, 1).Value  "" Then
If Application.WorksheetFunction.CountIf(Worksheets("Maßnahmen").Range(Worksheets("Maßnahmen").  _
_
Cells(s, 1), _
Worksheets("Maßnahmen").Cells(1, 1)), Worksheets("Maßnahmen").Cells(s, 1).Value) = 1 _
Then Worksheets("Einstellungen").ComboBox1.AddItem (Worksheets("Maßnahmen").Cells(s, 1).Value)
End If
Next
Application.ScreenUpdating = True
End Sub

Original:

For s = 2 To Worksheets("Maßnahmen").Range("I65536").End(xlUp).Row
If Worksheets("Maßnahmen").Cells(s, 9).Value  "" Then
If Application.WorksheetFunction.CountIf(Worksheets("Maßnahmen").Range(Worksheets("Maßnahmen").  _
_
Cells(s, 9), _
Worksheets("Maßnahmen").Cells(1, 9)), Worksheets("Maßnahmen").Cells(s, 9).Value) = 1 _
Then Worksheets("Einstellungen").ComboBox1.AddItem (Worksheets("Maßnahmen").Cells(s, 9).Value)
End If
Next

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Werte aus A, nicht mehr I
25.09.2011 09:45:30
hary
Hallo Wolfgang
ist das ganz unten wirklich der originalcode. Bei mir schreit der Debugger sofort.
Was moechtest Du erreichen?
gruss hary
AW: Werte aus A, nicht mehr I
25.09.2011 10:00:21
Josef

Hallo Wolfgang,
ungetestet!

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
  Dim vntList As Variant
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  
  With Worksheets("Maßnahmen")
    vntList = UniqueList(.Range("A2:A" & Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)))
  End With
  
  With Worksheets("Einstellungen")
    .Activate
    .Range("A1").Select
    .ComboBox2 = ""
    .ComboBox1 = ""
    .ComboBox3 = ""
    .ComboBox4 = ""
    .ComboBox1.List = vntList
  End With
  
  ErrExit:
  Application.ScreenUpdating = True
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function UniqueList(Matrix As Range, Optional VisibleCellsOnly As Boolean = True, Optional IncludeNull As Boolean = True, Optional Sorted As Boolean = True) As Variant
  Dim objDic As Object, rng As Range, varTmp() As Variant, vntExclude As Variant
  
  Set objDic = CreateObject("Scripting.Dictionary")
  
  vntExclude = IIf(IncludeNull, "", 0)
  
  If VisibleCellsOnly Then Set Matrix = Matrix.SpecialCells(xlCellTypeVisible)
  
  For Each rng In Matrix.Cells
    If rng.Value <> vntExclude Then objDic(rng.Value) = 0
  Next
  
  varTmp = objDic.keys
  
  If Sorted Then QuickSort varTmp
  
  UniqueList = varTmp
  
  Set objDic = Nothing
End Function


Private Sub QuickSort(data() As Variant, Optional UG, Optional OG)
  Dim P1&, P2&, T1 As Variant, T2 As Variant
  
  UG = IIf(IsMissing(UG), LBound(data), UG)
  OG = IIf(IsMissing(OG), UBound(data), OG)
  
  P1 = UG
  P2 = OG
  T1 = data((P1 + P2) / 2)
  
  Do
    
    Do While (data(P1) < T1)
      P1 = P1 + 1
    Loop
    
    Do While (data(P2) > T1)
      P2 = P2 - 1
    Loop
    
    If P1 <= P2 Then
      T2 = data(P1)
      data(P1) = data(P2)
      data(P2) = T2
      P1 = P1 + 1
      P2 = P2 - 1
    End If
    
  Loop Until (P1 > P2)
  
  If UG < P2 Then QuickSort data, UG, P2
  If P1 < OG Then QuickSort data, P1, OG
  
End Sub



« Gruß Sepp »

Anzeige
AW: Werte aus A, nicht mehr I
25.09.2011 10:10:09
Wolfgang
Hallo Hary,
Danke zunächst für Deine schnelle Rückantwort. Erreichen möchte ich, dass die Combobox1 zunächst mit den Daten aus Spalte A gefüllt wird und in Combobox2 wiederum die gefilterten Daten aus Spalte B anzeigt und in ComboBox3 dann wiederum die gefilterten Daten aus Spalte C - aus Spalte D dann zum Schluss die verbleibenden Daten in ComboBox4. Erreichen würde ich dann gerne, dass die dann gefilterten Datensätze endültig in der Tabelle "Einstellungen" ab A 14 angezeigt werden. Ich habe mir erlaubt, eine Mustermappe anzuhängen, die ich in ähnlichem Format im Forum entdecken konnte. Danke nochmals!
Gruß - Wolfgang

Die Datei https://www.herber.de/bbs/user/76751.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Werte aus A, nicht mehr I
25.09.2011 11:18:42
Wolfgang
Hallo Hary,
die Grundstruktur passt. Ich würde mir nur wünschen, dass die gefundenen Zeilen direkt auch als Zeile ab A14 hineinkopiert werden. Lasse ich den Filter schon nur auf Hauptkategorie stehen, dass dann z.B. bei "Deutschland" alle 11 Zeilen direkt ab A14 in "Einstellungen" eingefügt werden. Gäbe es z.B. dann mehrmals Berlin in der Unterkategorie 2, dann wiederum diese gefilterten Zeilen etc. - Im Grunde soll ggfs. immer mehr eine "Feinfilterung" vorgenommen werden können. Danke schon jetzt wieder für Deine Rückantwort.
Gruß - Wolfgang
Anzeige
AW: frage
25.09.2011 11:37:02
hary
hallo Wolfgang
Meinst Du mit Zeilen aus Tabelle Maßnahmen von SpalteA bis SpalteG ?
Dann koenntest Du doch auch gleich in Tabelle Maßnahmen die passenden rausfiltern(Autofilter).
gruss hary
AW: frage
25.09.2011 11:50:47
Wolfgang
Hallo Hary,
stimmt, ich würde gerne die jeweiligen Zeilen von A:H in "Einstellungen" nach den Vorgaben durch die ComboBoxes kopiert haben. Direkt den Filter in "Maßnahmen" würde ich nicht gerne einsetzen wollen, da ich das Tabellenblatt "Maßnahmen" später ausblenden möchte. Danke erneut für Deine Rückmeldung.
Gruß - Wolfgang
AW:Versuch
25.09.2011 13:30:56
hary
Hallo Wolfgang
Teste mal. Code kann bestimmt noch optimiert werden. Aber wenig Zeit.
https://www.herber.de/bbs/user/76755.xlsm
gruss hary
Anzeige
bei freigegebener Mappe sehr langsam
25.09.2011 19:37:43
Wolfgang
Hallo Hary,
herzlichen Dank für Deine erneute Ausarbeitung. Sie erfasst schon genau meine Vorstellungen. Ich habe noch versucht, weiter daran zu basteln und "zurücksetzen" versucht einzubauen. Ich möchte das Ergebnis später in der Vernetzung den Kollegen anbieten und somit die Arbeitsmappe freigeben. Die freigegebene Mappe läuft dabei aber sehr langsam. Hättest Du da evtl. noch eine Idee?
Danke und Gruß
Wolfgang

Die Datei https://www.herber.de/bbs/user/76756.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW:Frage offen
26.09.2011 08:22:24
hary
Hallo Wolfgang
Hab erst morgenabend wieder 2007. Hier nur '97.
Wegen der vernetzung hab ich keinen Plan.
Frage auf offen gestellt.
gruss hary
Danke Hary - läuft erheblich schneller
28.09.2011 19:05:26
Wolfgang
Hallo Hary,
herzlichen Dank erneut für Deine Rückmeldung und Ausarbeitung/Überarbeitung des Codes. Er läuft erheblich schneller und macht genau das, was ich mir gewünscht/vorgestellt hatte. Hab nochmals recht herzlichen Dank dafür. Dir weiterhin alles Gute!
Gruß - Wolfgang
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige