Thema Datum  Von Nutzer Rating
Antwort
Rot Excel - Vba Projekt
08.02.2017 09:29:58 Christian Meyer
NotSolved
08.02.2017 21:12:00 Onur
NotSolved
08.02.2017 21:34:24 BigBen
NotSolved
08.02.2017 21:49:27 Gast78819
NotSolved
09.02.2017 14:23:42 BigBen
NotSolved

Ansicht des Beitrags:
Von:
Christian Meyer
Datum:
08.02.2017 09:29:58
Views:
1230
Rating: Antwort:
  Ja
Thema:
Excel - Vba Projekt
Hallo,
 
Ich arbeite zur Zeit an einem Interface. Dieses ist aus einer Datenstruktur aufgebaut, welche ich vorgebe. Ich arbeite schon länger an dieser Aufgabe und habe zur Zeit meine bedenken, ob ich die Aufgabe mit den richtigen programmiertechnischen Strukturen löse. 
 
Das Projekt ist meinem Vorgsetzten nicht transparent genug und scheint unnötigen Code (zb Schleifen) zu beinhalten. Ich stimme ihm teils auch zu, jedoch weiß ich (noch) keine bessere Methode/ vorgehensweise, die Grundstruktur zu überarbeiten.
 
Ich versuche einfach mal mein Projekt anhand Ausschnitten aus meinem Code zu erklären.
 
Zum Projekt:
 
Ich habe zuerst ein Tabellenblatt, welches diverse Daten darstellt. Diese Daten sind Menüs in einer Software, die überprüft werden sollen. (Im Prinzip das Grundkonzept der Aufgabe). Diese Daten werden übertragen in ein zweites Tabellenblatt. Dieses ist dann für den Anwender. Ich übertrage die Daten mit einer wenn-dann Formel, um alle Daten Variabel anpassbar zu machen. Das heißt, mein zweites Tabellenblatt soll immer nur die Daten ausgeben, die auch überprüft werden sollen. Ich verbinde diesen Code mit einer indirekten Datenüberprüfung. Es gibt also eine Tabelle die hat A, B und C. A, B und C haben jeweils noch x Untermenüs. Jetzt möchte ich in meinem Interface(zweites Tabellenblatt) nur B anzeigen. Über die indirekte Datenüberprüfung und ein bisschen wenn-dann läuft dieses auch fließend. 
 
Die Probleme liegen eher in den Makros. Es sind die variablen Abhängigkeiten nenne ich es jetzt einfach mal :D.. Jede Zelle, die aus den Daten hervorkommen und immer unterschiedlich sein kann, hat eine Checkbox, die einen Triplestate hat und die Überprüfung iniziiert. False und Blau für muss überprüft werden, Null und Grün für erfolgreich überprüft und True und Rot für Fehler gefunden.  
 
Hier einfach mal zwei Funktionen die ich anwende.. die erste ist dafür da, die Checkboxen, die ich vorher initialisieren, anzupassen.
 
' -------  Anwenderänderungen der Checkboxen festlegen (Farben und/mit Triplestate)----------------------------
Sub CheckboxChange()

For iCheckboxChange = 0 To CheckBoxGrenzeSpalte

    If Range("E" & iCheckboxChange + StartZelle) = "-" Then
        nofunc = False
    End If

    If ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange).Object.value = True Then
        If Not ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange).Object.BackColor = DARKRED Then 'Farbe Fehler eingetragen
            ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange).Object.BackColor = RED ' Farbe Fehler NICHT eingetragen
        End If
    ElseIf ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange).Object.value = False Then
        ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange).Object.BackColor = BLUE ' Blaue Farbe
    Else
        ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange).Object.BackColor = GREEN ' Grün
    End If
    
    If ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange + CheckBoxStartSPALTE_G).Object.value = True Then
        If Not ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange + CheckBoxStartSPALTE_G).Object.BackColor = DARKRED Then
            ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange + CheckBoxStartSPALTE_G).Object.BackColor = RED
        End If
    ElseIf ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange + CheckBoxStartSPALTE_G).Object.value = False Then
        ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange + CheckBoxStartSPALTE_G).Object.BackColor = BLUE
    Else
        ActiveSheet.OLEObjects("CheckBox" & iCheckboxChange + CheckBoxStartSPALTE_G).Object.BackColor = GREEN
    ' hier fehlt noch falls das naechste untermenü nicht ausgefüllt wurd die Fehlermeldung!!! siehe Funktion checkboxpropsallu1
    End If

Next iCheckboxChange

End Sub

 

oder auch die zweite, die dafür sorgt, dass wenn andere Daten genommen werden, die Checkboxen wieder auf den Default-wert zurück gesetzt werden..

' ------ Diverse Default Einstellungen jedes mal wenn im Worksheet Änderungen vorgenommen werden---------------------------------------
Sub CheckboxPropertiesDefault()
'
' Alle Checkboxen false und null, falls die Zelle "-" ist
' null, damit diese Zellen nicht verhindern, dass die HauptCheckbox GREEN sein kann

For iCheckboxPropertiesDefault = 0 To CheckBoxGrenzeSpalte
' In Spalte C
    If Range(SSPALTE_C & iCheckboxPropertiesDefault + StartZelle) = "-" Then
        nofunc = False
        Range(SSPALTE_C & iCheckboxPropertiesDefault + StartZelle).Interior.ColorIndex = 0
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_C).Object.value = Null
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_C).Object.Enabled = False
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_C).Visible = False
    Else
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_C).Object.Enabled = True
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_C).Visible = True
    End If
 'In Spalte E
    If Range(SSPALTE_E & iCheckboxPropertiesDefault + StartZelle) = "-" Then
        nofunc = False
        Range(SSPALTE_E & iCheckboxPropertiesDefault + StartZelle).Interior.ColorIndex = 0
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault).Object.value = Null
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault).Object.Enabled = False
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault).Visible = False
    Else
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault).Object.Enabled = True
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault).Visible = True
    End If
 'In Spalte G
    If Range(SSPALTE_G & iCheckboxPropertiesDefault + StartZelle) = "-" Then
        nofunc = False
        Range(SSPALTE_G & iCheckboxPropertiesDefault + StartZelle).Interior.ColorIndex = 0
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_G).Object.value = Null
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_G).Object.Enabled = False
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_G).Visible = False
    Else
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_G).Object.Enabled = True
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_G).Visible = True
    End If
 'In Spalte I
    If Range(SSPALTE_I & iCheckboxPropertiesDefault + StartZelle) = "-" Then
        nofunc = False
        Range(SSPALTE_I & iCheckboxPropertiesDefault + StartZelle).Interior.ColorIndex = 0
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_I).Object.value = Null
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_I).Object.Enabled = False
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_I).Visible = False
    Else
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_I).Object.Enabled = True
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_I).Visible = True
    End If

' Falls die Zelle für die Checkbox ein untermenü enthält, wird die Checkbox Enable = false gesetzt (bisher nur Spalte C und E)
    If Range(SSPALTE_C & iCheckboxPropertiesDefault + StartZelle).Interior.Color = LIGHTBLUE Then
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault + CheckBoxStartSPALTE_C).Object.Enabled = False
    End If
    If Range(SSPALTE_E & iCheckboxPropertiesDefault + StartZelle).Interior.Color = LIGHTBLUE Then
        ActiveSheet.OLEObjects("Checkbox" & iCheckboxPropertiesDefault).Object.Enabled = False
    End If

Next iCheckboxPropertiesDefault
'
End Sub


Also es geht nicht darum, dass du/ihr den Code bearbeitet und aufs Detail untersucht. Dieser soll einfach nur einmal darstellen, 
in welche Form ich an dem Projekt arbeite. 
Ich möchte einfach mal eure Meinung über die idee hören und vielleicht Möglichkeiten so eine Aufgabe eleganter zu lösen..
Der Code soll in Vba bzw Excel bleiben.

Anbei noch ein Bild, wie das Interface aussieht.

Besten Dank!

http://www.directupload.net/file/d/4626/2agjvhq5_png.htm

http://www.directupload.net/file/d/4626/2agjvhq5_png.htm


 

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel - Vba Projekt
08.02.2017 09:29:58 Christian Meyer
NotSolved
08.02.2017 21:12:00 Onur
NotSolved
08.02.2017 21:34:24 BigBen
NotSolved
08.02.2017 21:49:27 Gast78819
NotSolved
09.02.2017 14:23:42 BigBen
NotSolved