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.

VBA Eingabemaske mit mehreren Datensätzen
#11
Hi Jonas,

(23.05.2017, 10:55)JonasW schrieb: Beim testen kommt ein Fehler "Index außerhalb des gültigen Bereichs" in folgender Zeile:

Code:
    For lZeile = 2 To Sheets("Projektstunden").Cells(Rows.Count, 1).End(xlUp)

ja klar, der Fehler kommt, wenn der Blattname nicht übereinstimmt.
Code:
For lZeile = 2 To Sheets("Projektstunden-LPH").Cells(Rows.Count, 1).End(xlUp)

dann ist ein weiterer Fehler drin:
Code:
Textbox1 = Trim(CStr(Projektstunden.Cells(lZeile, 1).Value))
das müßte vermutlich "pnr = ..." heißen
Woher weiß Excel, was "Projektstunden." ist?

Wenn Du am Anfang des gesamten Codes mal "Option Explicit" hinschreibst, wirst Du auf solche Fehler hingewiesen.

(23.05.2017, 10:55)JonasW schrieb: Wenn ich das richtig sehe wird jetzt aber nur der teil importiert den ich schon geschrieben hatte oder ?
Das Ziel ist, dass alle TextBoxen wieder den bei der Eingabe eingegebenen Wert erhalten und das ganze dann mit dem "Speichern" Button bei Änderungen überschrieben wird.
Ja, klar, das ist eine Fleißarbeit, jetzt für die anderen Mitarbeiter die Werte einzulesen. Die wollte ich Dir überlassen.
Wenn das drin ist, können wir das dann analog zu den For-Schleifen anpassen.

(23.05.2017, 10:55)JonasW schrieb: Leider hat mein Import aus dem Blatt "Projektbeteiligte" nur bei einem Projekt funktioniert. Sobald es 2 oder mehr werden hängt sich mein Excel auf.
dazu kann ich noch nichts sagen.
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • JonasW
Antworten Top
#12
Hi,

(23.05.2017, 12:03)Rabe schrieb: Ja, klar, das ist eine Fleißarbeit, jetzt für die anderen Mitarbeiter die Werte einzulesen. Die wollte ich Dir überlassen.
Wenn das drin ist, können wir das dann analog zu den For-Schleifen anpassen.

das ging jetzt doch ohne Fleißarbeit:
Private Sub ListBox1_Click()
 
  'Code von Ralf
 
  'Wenn der Benutzer einen Namen anklickt, suchen wir diesen in der Tabelle1 heraus
  'und tragen die Daten in die TextBoxen ein.
  Dim lZeile As Long
  Dim pZeile As Long
  Dim i As Long
 
  'Löschen aller Textboxen, die sich auf Projektstunden-LPH beziehen
  pnr = ""
  pbez = ""
  pstd = ""
  For i = 1 To 9
     Me.Controls("wlph" & i).Value = ""
     Me.Controls("vlph" & i).Value = ""
     Me.Controls("blph" & i).Value = ""
  Next i
  va = ""
  ba = ""
 
  'Nur wenn ein Eintrag selektiert/markiert ist
  If ListBox1.ListIndex >= 0 Then
     
     'Import aus Projektstunden
     'Schleife solange etwas in der ersten Spalte in Projektstunden drin steht
     For lZeile = 2 To Sheets("Projektstunden-LPH").Cells(Rows.Count, 1).End(xlUp)
       
        'Wenn wir den Namen aus der ListBox1 in der Projektstunden Spalte 2 gefunden haben,
        'übertragen wir die anderen Spalteninhalte in die TextBoxen!
        If ListBox1.Text = Trim(CStr(Projektstunden.Cells(lZeile, 2).Value)) Then
           
           'TextBoxen füllen
           pnr = Trim(CStr(Projektstunden.Cells(lZeile, 1).Value))
        For i = 0 To 8
           Me.Controls("wlph" & i + 1).Value = Projektstunden.Cells(lZeile + i, 3).Value * 100
           Me.Controls("vlph" & i + 1).Value = Projektstunden.Cells(lZeile + i, 4).Value
           Me.Controls("blph" & i + 1).Value = Projektstunden.Cells(lZeile + i, 5).Value
        Next i
           
           Exit For 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
        End If
     Next lZeile
  End If
 
  'Import aus Projektbeteiligte
  '   For i = 1 To 10
  '      Me.Controls("ma" & i).Value = ""
  '   Next i
 
  If ListBox1.ListIndex >= 0 Then
     For pZeile = 2 To Sheets("Projektbeteiligte").Cells(Rows.Count, 1).End(xlUp)
        If ListBox1.Text = Trim(CStr(Projektbeteiligte.Cells(pZeile, 2).Value)) Then
           For i = 0 To 9
              Me.Controls("ma" & i + 1).Value = Projektbeteiligte.Cells(pZeile + i, 3).Value
           Next i
           Exit For 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
        End If
     Next pZeile
  End If
 
End Sub

Damit geht jetzt das Starten der Eingabemaske, das Abspeichern und das Aufrufen aus der Listbox.
Wenn dann aber nach dem Aufrufen aus der Listbox wieder abgespeichert werden soll, gibt es einen "Typen unverträglich"-Fehler.

Ich habe heute keine Zeit mehr, vielleicht könnte sich das einer der VBA-Experten anschauen.

.xlsm   170523_KAPA - Rabe.xlsm (Größe: 1,53 MB / Downloads: 7)
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • JonasW
Antworten Top
#13
Moin,
ich glaube, dass da etwas fehlt:
Code:
For lZeile = 2 To Sheets("Projektstunden").Cells(Rows.Count, 1).End(xlUp).Row

(also das ".Row" am Schluß).
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#14
Hi Günther,

egal, ob mit oder ohne .Row ist das Ergebnis gleich.

Teste es bitte mal aus:
  1. Eingabemaske aufrufen
  2. in TextBox Projektbezeichnung einen Namen eingeben
  3. Speichern drücken
  4. wenn abgespeichert, dann auf einen Projektnamen in der ListBox klicken
  5. Speichern drücken
  6. => Fehlermeldung

Aber es stimmt noch mehr nicht:
  • va und ba wird nicht korrekt eingetragen in Projektstunden-LPH, soll da wirklich ein Datum rein?
  • Planstunden gesamt (pst) werden gar nicht eingetragen
  • pstd, va und ba werden auch nicht rückgelesen
Antworten Top


Gehe zu:


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