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.

dropdown-Liste per Makro aufrufen
#11
Hallöchen,

mal ziemlich fest programmiert könnte es für Typ1 so aussehen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Wenn in Spalte A im Bereich A3:A4 was geaendert wurde, dann
If Not Intersect(Target, Range("A3:A4")) Is Nothing Then
   'Ab Spalte C zwei Spalten in der Zeile leeren
   Cells(Target.Row, 3).Resize(, 2).Value = ""
'Ende Wenn in Spalte A im Bereich A3:A4 was geaendert wurde, dann
End If
'Wenn in Zeile 1 im Bereich C1:D1 was geaendert wurde, dann
If Not Intersect(Target, Range("C1:D1")) Is Nothing Then
   'Ab Zeile 3 zwei Zeilen in der Spalte leeren
   Cells(3, Target.Column).Resize(2, 1).Value = ""
'Ende Wenn in Zeile 1 im Bereich C1:D1 was geaendert wurde, dann
End If
End Sub

Die Enden kann man dann noch entweder variabel gestalten oder man nimmt einen größeren festen Bereich. Das wäre jetzt aber erst mal was zum Testen.

Zu 2. weiß ich nicht so genau, wie Du es meinst. Wenn Du in Spalte A einen weiteren Buchstaben hast, dann gibt es doch matrixbedingt immer ein C und D dazu.
Wenn Du da keine Werte willst, könntest Du dort z.B. bei den Parametern überall den Buchstaben eintragen und dann eben auswählen. Und / Oder Du färbst zur Kennzeichnung die zugehörige Zelle in Spalte B oder Zeile 2 rot oder wie auch immer?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#12
Hallo und moin,

danke nochmal, dass klappt soweit. Die Enden müssten aber wie Du es schon beschrieben hattest Variabel sein. Denn ich kann im Vorfeld nicht sagen, wie groß die Matrix wird bzw. wieviele Typen in den Spalten und Zeilen eingetragen werden. Und ein größerer Bereich geht auch nicht, weil ich neben den Zeilen noch Kommantarfelder vorsehen möchte, die dann ggf. mit gelöscht würden.

Das bedeutet aus meiner Sicht, das Makro müsste abfragen, wieviele Typen in der Spalte A ab Zeile 4 eingetragen wurden und wieviele Typen in der Zeile 1 ab Spalte D eingetragen wurden. Daran müsste sich dann der Bereich richten, in dem gelöscht wird. Eine Idee dazu ?

Zu 2)

-Es gibt bestimmte Kombinationen die haben nur einen Parameter in der Hilfstabelle. Dieser eine Parameter könnte idealerweise, wenn die Nr. in der Spalte bzw. Zeile übereinstimmt direkt über ein Makro in die entsprechende Schnittstellen-Zelle der Matrix eingetragen werden. Und zwar müsste diese Funktion immer dann aufgerufen werden, wenn die Nr. verändert bzw. eingetragen wird, oder halt, wenn der Typ verändert wird.

Das mit der Farbe hat mich auf folgende Idee gebracht:
-Es gibt Kombinationen die haben zwei Parameter, dann muss der User einen Parameter über das dropdown auswählen.
Es wäre genial, wenn die Nr. in Spalte und Zeile übereinstimmt und es zwei Parameter in der Hilfstabelle zur Auswahl gibt, die entsprechende Zelle z.B. rot  leuchtet.

Habe das mal als Beispiel dargestellt
.xlsx   Test_Matrix-2.xlsx (Größe: 13,02 KB / Downloads: 10) .

Gruss Mike
Antworten Top
#13
Hallöchen,

ich schiebe Thread nochmal nach oben. Noch jemand ne Idee dazu ?

Danke vorab
Antworten Top
#14
Hallo Mike,

ich sitz auch nicht jeden Tag vor'm Rechner Sad Eventuell wird es morgen was.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#15
Hallöchen,

hier das geänderte Makro. Für die farbliche Markierung bräuchte man kein Makro, da könnte man die bedingte Formatierung verwenden. Bekommst Du das hin? Wenn nicht, nochmal nachfragen ...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Wenn in Spalte A im Bereich A3:A4 was geaendert wurde, dann
If Not Intersect(Target, Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))) Is Nothing Then
  'Ab Spalte C zwei Spalten in der Zeile leeren
  Cells(Target.Row, 3).Resize(, Cells(1, Columns.Count).End(xlToLeft).Column - 2).Value = ""
'Ende Wenn in Spalte A im Bereich A3:A4 was geaendert wurde, dann
End If
'Wenn in Zeile 1 im Bereich C1:D1 was geaendert wurde, dann
If Not Intersect(Target, Range(Cells(1, 3), Cells(1, Columns.Count).End(xlToLeft))) Is Nothing Then
  'Ab Zeile 3 zwei Zeilen in der Spalte leeren
  Cells(3, Target.Column).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 2, 1).Value = ""
'Ende Wenn in Zeile 1 im Bereich C1:D1 was geaendert wurde, dann
End If
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#16
Hallo Andre,

danke erst nochmal. Also das mit der bedingten Formatierung muss ich mir mal anschauen ggf. bekomme ich das alleine hin.
Was mir aber noch fehlt und wozu ich Deine Hilfe benötige wäre, dass der innere Bereich der Matrix durchlaufen wird. Hier die Beschreibung:

-Es gibt bestimmte Kombinationen (also Typ 1 und Typ 2) die haben nur einen Parameter in der Hilfstabelle. Dieser eine Parameter könnte idealerweise, wenn die Nr. in der Spalte bzw. Zeile übereinstimmt direkt über ein Makro in die entsprechende Schnittstellen-Zelle der Matrix eingetragen werden. Und zwar müsste diese Funktion immer dann aufgerufen werden, wenn die Nr. verändert bzw. eingetragen wird, oder halt, wenn der Typ verändert wird.

Das bedeutet für dieses Beispiel, dass in die Zelle D4 automatisch die 100 eingetragen wird.

Gruß Mike
Antworten Top
#17
Hallöchen,

da muss ich noch drüber nachdenken. Beim Dropdown hast Du ja gesehen, dass ich mir eine "zusammenfassende Hilfsspalte" zur Unterstützung genommen habe. Jetzt müsste man erst mal schauen, wie man bei der Zusammenstellung die Nummer berücksichtigt …

Der automatische Eintrag einer Zahl müsste dann erfolgen, wenn Du in Deiner anderen Tabelle die Parameter füllst. Wenn Du was änderst, müsste das auch geändert werden, oder? Und wenn Du einen Parameter von zweien löschst, müsste ggf. der eine gelöscht und der übrig gebliebene eingetragen werden.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
Hi,

da ist etwas falsch rübergekommen. Also, die Hilfstabelle mit den Parametern wird nur einmal erstellt und dann nicht mehr verändert. Änderungen darin müssen also nicht sofort eine Auswirkung auf die Matrix haben. 

Der Anwender arbeitet nur in der Matrix. Sobald an der Nr. oder an dem Typ, ob Spalte oder Zeile etwas verändert wird, sollen die Werte in der entsprechenden Spalte bzw. Zeile wieder gelöscht und neu durchlaufen werden.
Ich habe jetzt aber ne Idee wie das Durchlaufen vielleicht einfacher umzusetzen wird. Anbei das Bsp
.xlsm   Test_Matrix-3.xlsm (Größe: 19,64 KB / Downloads: 15) .

Für den Durchlauf der Zellen einer Spalte bzw. Zeile der Matrix muss gelten:
Wenn die Nr. in Spalte bzw. Zeile der Matrix übereinstimmt -> suche in Hilfstabelle nach der Zeile mit der entsprechenden Kombination Typ1 bzw. Typ2.
Wenn in Spalte 13 in der Zeile mit der Kombination eine 1 steht -> schreibe den Wert aus Spalte 11 der Zeile mit der Kombination in die entsprechnde Matrix-Zelle
Wenn in Spalte 13 in der Zeile mit der Kombination eine 2 steht -> Markiere die Zelle farbig

Ich hoffe es ist soweit verständlich.
Antworten Top
#19
Hallöchen,

anbei ein weiterer Code. Ist erst mal nur für die Parameterübernahme bei Änderungen in Spalte A.
Wenn nur ein Parameter da ist, steht der immer als Parameter 2? Ist erst mal so programmiert.
Der Code geht auch davon aus, dass die Parametertabelle wie im Beispiel in Zeile 2 beginnt, die Eintragungen dann ab Zeile 3. Spaltenaufteilung ist ebenso programmiert wie im Beispiel.


Die 100 wird übrigens 2x eingetragen, weil die Kombination AC mit Nr. 1 2x vorhanden ist.

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'Variablendeklaration, Integer und String
Dim iCnt1%, iCnt2%, strTyp$
On Error GoTo errorhandler
'Eventsteuerung ausschalten
Application.EnableEvents = False
'Wenn in Spalte A im Bereich A3:Axxx was geaendert wurde, dann
If Not Intersect(Target, Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))) Is Nothing Then
  'Ab Spalte C zwei Spalten in der Zeile leeren
  Cells(Target.Row, 3).Resize(, Cells(1, Columns.Count).End(xlToLeft).Column - 2).Value = ""
  'Schleife ueber alle Eintraege in Zeile 1 ab Spalte D = 4
  For iCnt1 = 4 To Cells(1, Columns.Count).End(xlToLeft).Column
    'Wenn Nummern gleich sind, dann
    If Cells(Target.Row, 2).Value * 1 = Cells(2, iCnt1).Value * 1 Then
        'Kombination ermitteln
        strTyp = Cells(Target.Row, 1).Value & Cells(1, iCnt1).Value
        'Startzeile fuer Kombination
        iCnt2 = 3
        'Schleife solange was in Kombinationsspalte steht, hier L = 12
        Do While Cells(iCnt2, 12).Value <> ""
           'Wenn dort die Kombination steht, dann
           If Cells(iCnt2, 12).Value = strTyp Then
             'Wenn Parameter 1 leer ist, dann
             If Cells(iCnt2, 10).Value = "" Then
               'Parameter uebernehmen
               Cells(Target.Row, iCnt1).Value = Cells(iCnt2, 11).Value
               'Schleife verlassen
               Exit Do
             'Ende Wenn Parameter 1 leer ist, dann
             End If
           'Ende Wenn dort die Kombination steht, dann
           End If
        'Ende Schleife solange was in Kombinationsspalte steht, hier L = 12
        Loop
    'Ende Wenn Nummern gleich sind, dann
    End If
  'ende Schleife ueber alle Eintraege in Zeile 1 ab Spalte D = 4
  Next
'Ende Wenn in Spalte A im Bereich A3:A4 was geaendert wurde, dann
End If
'Wenn in Zeile 1 im Bereich C1:xxx1 was geaendert wurde, dann
If Not Intersect(Target, Range(Cells(1, 3), Cells(1, Columns.Count).End(xlToLeft))) Is Nothing Then
  'Ab Zeile 3 zwei Zeilen in der Spalte leeren
  Cells(3, Target.Column).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 2, 1).Value = ""
'Ende Wenn in Zeile 1 im Bereich C1:D1 was geaendert wurde, dann
End If
errorhandler:
If Err Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
'Eventsteuerung einschalten
Application.EnableEvents = True
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#20
Moin,

danke erstmal, aber bei mir stürzt Excel nun sofort ab, wenn ich z.B. in Zelle A4 etwas editiere. Was könnte das sein ?

Zu der Frage: Wenn zu einer Kombination nur ein Parameter da ist, steht in der Hilfstabelle in Spalte 13 (in der Zeile mit der entsprechenden Kombination) eine 1. Dann soll der Wert aus Spalte 11 in die Matrix übertragen werden, aber auch nur, wenn die Nr. in Spalte/Zeile übereinstimmt.
Antworten Top


Gehe zu:


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