Seite 1 von 1

Makro "PruefeUndEinfuegen" [gelöst]

Verfasst: So 3. Mär 2024, 17:55
von Tschubi
Hallo,

in Zelle B2 habe ich ein Dropdown Menu welches als Gültigkeit "$Tabelle1.$E$2:$E$4" mit unterschiedlichen Texten hat.
In Zelle $B$6 werden hier im Testdokument mittels Wenn Funktion unterschiedliche Zahlenwerte ausgegeben.

Das Makro "PruefeUndEinfuegen" soll nun den Inhalt (Text) von Zelle $B$2 mit E2, E3 und E4 abgleichen und bei Übereinstimmung den Zahlenwert aus $B$6 entsprechend der Übereinstimmung in F2, F3 oder F4 einfügen.

Das Makro "PruefeUndEinfuegen" ist der Tabelle1 als Ereigniss / Inhalt geändert zugewiesen und wird somit bei jeder Änderung ausgeführt.

Leider klappt die Prüfung und Einfügen nicht.

Kann mal bitte jemand schauen woran ich scheitere.

Danke und Gruß

Re: Makro "PruefeUndEinfuegen"

Verfasst: So 3. Mär 2024, 19:21
von karolus
Hallo

Code: Alles auswählen

Sub PruefeUndEinfuegen( event )
    oSheet = event.SpreadSheet    
    B6 = oSheet.getCellRangeByName("B6")    
    E2 = oSheet.getCellRangeByName("E2")
    E3 = oSheet.getCellRangeByName("E3")
    E4 = oSheet.getCellRangeByName("E4")    
    F2 = oSheet.getCellRangeByName("F2")            
    F3 = oSheet.getCellRangeByName("F3")    
    F4 = oSheet.getCellRangeByName("F4")    
    if event.AbsoluteName = "$Tabelle1.$B$2" then
        check = event.String
        msgbox "Inhalt Variable (sTextToCheck): " & check 
        select case check
             case E2.String 
                 F2.value = B6.Value 
                 msgbox "[ E2 ]: " & F2.Value
             case E3.String  
                 F3.value = B6.Value 
                 msgbox "[ E3 ]: " & F3.Value
            case E4.String  
                 F4.value = B6.Value 
                 msgbox "[ E4 ]: " & F4.Value
        End select
    end if   
End sub	
und weils Spass macht das Manöver in python ( ohne msgbox )

Code: Alles auswählen

def prüfe( event ):
    sheet = event.Spreadsheet
    liste = list(zip(*sheet["E2:E4"].DataArray))[0]
    if event.AbsoluteName == "$Tabelle1.$B$2":
        check = event.String
        werte = sheet["F2:F4"]
        werte[liste.index(check), 0 ].Value = sheet["B6"].Value

Re: Makro "PruefeUndEinfuegen"

Verfasst: Mo 4. Mär 2024, 12:37
von Tschubi
Hallo karolus,

besten Dank,

dein Code ist wesentlich kürzer und erst recht in python und funktioniert super!

VG