Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Diverse Probleme bei Programmierung/Ideenfindung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Diverse Probleme bei Programmierung/Ideenfindung (622 / mal gelesen)
Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

Microsoft Excel 2016

erstellt am: 12. Mrz. 2018 12:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Programm.JPG

 
Hallo liebe Community,

aktuell programmiere ich in Excel an etwas herum, wobei ich vor Probleme stoße, für die ich keine Idee habe, wie ich das umsetzen könnte bzw. dies nicht richtig gemacht wird.

Zu den Fakten:
Ich habe 4 Output-Zellen, welche durch Comboboxen oder Zellen befüllt warden.
Input für die Comboboxen ist ein Bereich von Zellen.
Es gibt des Weiteren auch noch 9 Zeilen, welche ebenfalls die Output-Zellen steuern.

Zur Funktion:

Wenn eine der Input-Zellen befüllt wird, soll die erste Combobox versteckt werden. Die anderen Comboboxen sollen zu Anfang leer sein und befüllt werden können. Dies wird dann in Output-Zelle 1 geschrieben.
Wird eine zweite Input-Zelle befüllt, wird geprüft, ob der Name nicht der ersten Input-Zelle entspricht. Wenn der Name der ersten Input-Zelle entspricht, soll nichts passieren. Ist der Name unterschiedlich soll dieser in Output-Zelle 2 geschrieben werden. Hier sollen weiterhin die Comboboxen 3 und 4 leer sein. Wenn in Combobox 3 jetzt ein Wert gewählt wird, soll dieser in Output-Zelle 3 geschrieben werden. Der gewählte Wert soll jedoch aus Combobox 4 verschwinden.

Das Verschwinden der Werte der jeweils nächsten Combobox soll bei jeder Combobox funktionieren, außer bei der ersten.

Das Problem:
Wenn Combobox 2 den Wert "b" besitzt und man Combobox 1 ebenfalls auf Wert "b" setzt, entsteht ein Fehler.
Ich kann die Value der Combobox nicht leer setzen, da mein Code dann den Wert bei jeder Änderung leer setzen würde.

Ich hoffe, dass ihr mir folgen könnt, den der Code ist relativ komplex denke ich und ist nicht einfach zu gestalten.

Hier meine aktuellen Programmierversuche:

Code der Tabelle1:

Code:
Private Sub ComboBox1_Change()

Modul1.ComboBoxaktualisieren
Cells(4, 8) = ComboBox1.Value

End Sub

Private Sub ComboBox2_Change()

Modul1.ComboBoxaktualisieren
Cells(5, 8) = ComboBox2.Value

End Sub

Private Sub ComboBox3_Change()

Modul1.ComboBoxaktualisieren
Cells(6, 8) = ComboBox3.Value

End Sub

Private Sub ComboBox4_Change()

Modul1.ComboBoxaktualisieren
Cells(7, 8) = ComboBox4.Value

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Modul1.ComboBoxaktualisieren

End Sub


Code des Moduls:

Code:
Sub ComboBoxaktualisieren()
On Error Resume Next
With Tabelle1

    iSpalteNormteil = 4
    sDropDownAnfang = .Cells(4, 4).Address 'Reihe,Spalte
    sDropDownEnde = .Cells(12, 4).Address 'Reihe,Spalte
    iReiheNormteilAnfang = 16
    iReiheNormteilEnde = 24
    Set sFuege1 = Cells(4, 8)
    Set sFuege2 = Cells(5, 8)
    Set sFuege3 = Cells(6, 8)
    Set sFuege4 = Cells(7, 8)

    'wenn Normteiltabelle befuellt dann
    If Cells(16, iSpalteNormteil) <> "" Or Cells(17, iSpalteNormteil) <> "" Or Cells(18, iSpalteNormteil) <> "" Or Cells(19, iSpalteNormteil) <> "" Or _
    Cells(20, iSpalteNormteil) <> "" Or Cells(21, iSpalteNormteil) <> "" Or Cells(22, iSpalteNormteil) <> "" Or Cells(23, iSpalteNormteil) <> "" Or Cells(24, iSpalteNormteil) <> "" Then

        'Drop-Down ausblenden
        .ComboBox1.Visible = False
        .ComboBox2.Visible = False
        .ComboBox3.Visible = False
        .ComboBox4.Visible = False
       
        .Cells(4, 8) = .Cells(16, iSpalteNormteil)

        For i = iReiheNormteilAnfang To iReiheNormteilEnde

            If Cells(i, iSpalteNormteil).Value <> sFuege1 And Cells(i, iSpalteNormteil).Value <> "" And sFuege1.Value <> "" Then
               
                sFuege2.Value = Cells(i, iSpalteNormteil)
                Exit For
               
            End If
           
        Next
       
        If i <> iReiheNormteilEnde + 1 Then
       
            For ii = iReiheNormteilAnfang To iReiheNormteilEnde
       
                If Cells(ii, iSpalteNormteil).Value <> sFuege1.Value And Cells(ii, iSpalteNormteil).Value <> sFuege2.Value _
                And Cells(ii, iSpalteNormteil).Value <> "" And sFuege1.Value <> "" Then
           
                    sFuege3.Value = Cells(ii, iSpalteNormteil)
                    Exit For
               
                End If
           
            Next

            If ii <> iReiheNormteilEnde + 1 Then

                For iii = iReiheNormteilAnfang To iReiheNormteilEnde
       
                    If Cells(iii, iSpalteNormteil).Value <> sFuege1.Value And Cells(iii, iSpalteNormteil).Value <> sFuege2.Value And Cells(iii, iSpalteNormteil).Value <> sFuege3.Value _
                    And Cells(iii, iSpalteNormteil).Value <> "" And sFuege1.Value <> "" Then
           
                        sFuege4.Value = Cells(iii, iSpalteNormteil)
                        Exit For
               
                    End If
           
                Next
       
            End If
       
        End If
       
        If i = iReiheNormteilEnde + 1 Then
       
            'Drop-Down einblenden
            .ComboBox2.Visible = True
            .ComboBox3.Visible = True
            .ComboBox4.Visible = True
           
            'Drop-Down befuellen
            .ComboBox2.List = Range(sDropDownAnfang, sDropDownEnde).Value
            .ComboBox3.List = Range(sDropDownAnfang, sDropDownEnde).Value
            .ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
           
            'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
            If .ComboBox2.Value <> "" Then
       
                .ComboBox3.RemoveItem .ComboBox2.ListIndex
                .ComboBox4.RemoveItem .ComboBox2.ListIndex

            End If

            'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
            If .ComboBox3.Value <> "" Then

                .ComboBox4.RemoveItem .ComboBox3.ListIndex

            End If
           
        End If
       
        If ii = iReiheNormteilEnde + 1 Then
       
            'Drop-Down einblenden
            .ComboBox3.Visible = True
            .ComboBox4.Visible = True
           
            'Drop-Down befuellen
            .ComboBox3.List = Range(sDropDownAnfang, sDropDownEnde).Value
            .ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value

            'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
            If .ComboBox3.Value <> "" Then

                .ComboBox4.RemoveItem .ComboBox3.ListIndex

            End If
           
        End If
       
        If iii = iReiheNormteilEnde + 1 Then
       
            'Drop-Down einblenden
            .ComboBox4.Visible = True
           
            'Drop-Down befuellen
            .ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
           
        End If
       
    Else
           
        'Fuegeverfahren-Zellen leeren
        sFuege1 = .ComboBox1.Value
        sFuege2 = .ComboBox2.Value
        sFuege3 = .ComboBox3.Value
        sFuege4 = .ComboBox4.Value

        'Drop-Down befuellen
        .ComboBox1.List = Range(sDropDownAnfang, sDropDownEnde).Value
        .ComboBox2.List = Range(sDropDownAnfang, sDropDownEnde).Value
        .ComboBox3.List = Range(sDropDownAnfang, sDropDownEnde).Value
        .ComboBox4.List = Range(sDropDownAnfang, sDropDownEnde).Value
       
        'Drop-Down einblenden
        .ComboBox1.Visible = True
        .ComboBox2.Visible = True
        .ComboBox3.Visible = True
        .ComboBox4.Visible = True


        'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
        If .ComboBox1.Value <> "" Then

            .ComboBox2.RemoveItem .ComboBox1.ListIndex
            .ComboBox3.RemoveItem .ComboBox1.ListIndex
            .ComboBox4.RemoveItem .ComboBox1.ListIndex

        End If

        'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
        If .ComboBox2.Value <> "" Then
       
            .ComboBox3.RemoveItem .ComboBox2.ListIndex
            .ComboBox4.RemoveItem .ComboBox2.ListIndex

        End If

        'Pruefen, wenn leer bzw. Wert schon gesetzt dann entfernen
        If .ComboBox3.Value <> "" Then

            .ComboBox4.RemoveItem .ComboBox3.ListIndex

        End If

    End If

End With

End Sub


Zu guter letzt noch ein Bild im Anhang, welches ich ein wenig beschriftet habe, damit der Code eventuell verständlicher ist.
Bitte bestraft mich nicht zu sehr wegen der schlechten Programmierstruktur. Ich programmiere erst aktiver seit ca. 8 Monaten. Bin also noch ein blutiger Anfänger.

Herzlichen Dank für eure Antworten!

Gruß
Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz