Ausführliches Userform Formular
#11

.xlsm   ProjektübersichtVBA2_ralf_b.xlsm (Größe: 49,16 KB / Downloads: 6)

1. Hilfsfunktionen schreibst du bitte in ein Modul 
2. deine Constantennamen  sind zwar sehr informativ aber die machen deinen Code  sehr unübersichtlich, weil die Befehle sehr breit werden
3. entweder entsprechen deine Beispielttabellen niciht dem echten Projekt oder du  mahcst dir das mit deine Constanten zu einfach.

z.b. iCONST_ANZAHL_EINGABEFELDER  ist 7 aber in der Personaltabelle hast du nur 4 Spalten.
Das dürfte auch bei den anderen Tabellen immer eine andere Spaltenanzahl sein. deshalb ist die Verwendung einer Konstante da eher hinderlich. 
Das ermitteln der letzen Spalte wenn du sie benötigst, sollte dir keine Mühe bereiten.

4. ist_Zeile_leer  kannst du getrost vergessen. Du prüfst darin immer in "Tabelle 1". Das macht keinen Sinn wenn du eine leere Zeile in Tabelle 2 suchst.  
übergib der Funktion noch das Worksheet z.b. als Name  und sprich es dann in der Funktion mit Worksheets ("NamederTabelle") an. 
Die Prüfung auf leere Zeilen würde ich mit einer Prüfung des Bereiches auf AnzahllNichtleererZellen machen. 
if  Worksheetfunction.CountA(zuprüfenderBereich)  = 0 then  true  else false   ( nur mal so als Anregung)

5. deine Löschroutine ist fehlerhaft. da du in der Tabelle die Zeile löschst, passt die Zuordnung in deiner Liste(Zeilennumer , ...) nicht mehr. 
Nach dem Löschen der Tabellenzeile verschieben sich die Zeilennummern. Nach lösche Zeile 5, wird aus Zeile 6 die neue Zeile 5.
Deshalb müßtest du die Listbox immer neu einlesen. Oder du verwendest die Rowsource eigenschaft, und verbindest damit Listenwerte direkt mit Tabellenwerten.

6. deine Textboxen heißen alle "Textbox & laufende Nummer". Das mag ja ganz nett sein wenn du die kleine Schleife benutzen willst,
aber für die spätere Codepflege und -lesbarkeit ist das tödlich. Vergib eindeutige, kurze Bezeichnungen. z.b. tbxPersNr  
 
7. CStr(Tabelle2.Cells(lZeile, 1).Text)   .text kommt schon als Text , den brauchst du nicht nochmal als Cstr casten. 

8. du benutzt die Codenamen der Tabellen. z.b. Tabelle2.Range(......) Solltest du später mal eine Tabelle ersetzen müssen, hast du wieder extra Programmieraufwand. 
Du müsstest überall im Code den Namen ändern.  Siehe Punkt 4

9. bei der Inintialisierung der UF rufst du verschiedene Funktionen auf. Darin werden jedesmal die Textboxen 1 - 7 leer gemacht. das ist unötig wenn du mit dem ersten Projekt startest, dann kannst du direkt die Felder mit Werten füllen. Abhängig vom ersten Eintrag in deiner Projektliste 

10. Arbeite mit dem Changevent. z.b. wenn sich  liste1 ändert, dann fülle liste2 neu.
Top
#12
Hallo zusammen, 

ich habe es leider nicht geschafft die Anpassungen richtig durchzuführen und wollte deswegen meine Tabelle etwas vereinfachen. Das Prinzip soll das gleiche bleiben.
Nun möchte ich für jeden Register eine eigene Userform erstellen. 
Dabei benötige ich bei der Userform "Materialaufwand" noch einmal gezielte Hilfe.

Ich möchte hierbei in der ComboBox1 das Projekt auswählen welches aus Tabelle1 kommt. --> soweit erledigt. 
Nun aber soll er bei jedem neuen Eintrag das ausgewählte Projekt aus ComboBox1 in die Tabelle2 in Spalte A kopieren, damit ich immer eine Projektzugehörigkeit habe.
Desweiteren soll die ListBox immer dann aktualisiert werden, wenn die ComboBox1 verändert wird und die ListBox1 auch davon abhängig ist. 
Sprich ich habe in Tabelle2 nun alle Datensätze zu Projekt1 und wähle nun in der ComboBox1 das Projekt1 aus und nun soll die ListBox1 mir nur noch alle Daten die in Tabelle2 zu Projekt1 gespeichert sind anzeigen.
Wie kann ich das Problem in meinen bisher gebauten Code anpassen? 

VIELEN DANK FÜR EURE HILFE!!! BIN WIRKLICH VERZWEIFELT  Undecided


Angehängte Dateien
.xlsm   Userform VBA2.xlsm (Größe: 47,32 KB / Downloads: 4)
Top


Gehe zu:


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