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-Projekt_Hilfe alles
#21
Hallöchen,

Du hast die Frage ja auch 2x programmiert. Wenn ich richtig liege, ist sie im Else-Zweig der ersten Fragestellung.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#22
Oh man... Danke André!
Antworten Top
#23
Hallo,

Code:
'Formular Löschen
         For Each ctrElement In Controls
            Select Case TypeName(ctrElement)
               Case "TextBox": ctrElement = ""
            End Select
         Next
        
         'Listbox löschen
         ListBox1.Clear
        
         Unload Me

mit Unload Me wird die Userform aus dem Speicher entfernt. Du brauchst daher nicht vorher die Textboxen noch leeren, das geschieht mit den Entladen ganz automatisch.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#24
Huh ... Ich bin gerade am Verzweifeln. Eigentlich dachte ich meine Suchmaske und das mit dem zurückspeichern von Änderungen klappt, macht es aber irgendwie nicht. Meine Suchmaske hat drei Möglichkeit zum Suchen. Suche 1 sucht in Spalte A, 2 in B und 3 in C. Habe ich über eine der Suchvarianten gesucht, dann kann ich über einen Button die Maske entsperren, Daten ändern und über einen weiteren Button Änderungen in das Tabellenblatt zurückspeichern. Zum Speichern verwende ich den nachfolgenden Code. Und hier scheint mal wieder der Fehler im Detail zu stecken. Irgendwie speichert er nicht die Daten dort wo Sie hin sollen, sondern immer verschoben. Suche ich über Spalte A, verschiebt er die Daten in der geänderten Zeile aus den Spalten B, C und D um eine Spalte nach links. Suche ich in Spalte B, schiebt er ab E alles um eins nach rechts...



Code:
Private Sub CommandButton13_Click()   'Änderungen an Daten speichern


'
'   ändern
'

Dim lLetzte  As Long
Dim ctrElement As Control

  If TextBox27.Text = "" Then
     MsgBox "Sie müssen Aktenzeichen eingeben - Danke.", _
        48, "   Hinweis für " & Application.UserName
     TextBox27.SetFocus
     Exit Sub
  End If
  If TextBox28.Text = "" Then
     MsgBox "Sie müssen einen Namen eingeben - Danke.", _
        48, "   Hinweis für " & Application.UserName
     TextBox28.SetFocus
     Exit Sub
  End If
 
  If TextBox29.Text = "" Then
     MsgBox "Sie müssen einen Vornamen eingeben - Danke.", _
        48, "   Hinweis für " & Application.UserName
     TextBox28.SetFocus
     Exit Sub
  End If
 
'
'   die Daten sind geprüft und können in die Tabelle eingetragen werden
'
  'Application.ScreenUpdating = True

  With Worksheets("Daten_WS")
     
     
     rngFind.Offset(0, 0).Value = WorksheetFunction.Proper(TextBox27.Text)
     rngFind.Offset(0, 1).Value = WorksheetFunction.Proper(TextBox28.Text)
     rngFind.Offset(0, 2).Value = WorksheetFunction.Proper(TextBox29.Text)
     rngFind.Offset(0, 4).Value = WorksheetFunction.Proper(TextBox30.Text)
     rngFind.Offset(0, 5).Value = WorksheetFunction.Proper(TextBox31.Text)
     rngFind.Offset(0, 6).Value = WorksheetFunction.Proper(TextBox32.Text)
     rngFind.Offset(0, 7).Value = WorksheetFunction.Proper(TextBox33.Text)
     rngFind.Offset(0, 8).Value = WorksheetFunction.Proper(TextBox34.Text)
     rngFind.Offset(0, 9).Value = WorksheetFunction.Proper(TextBox43.Text)
     rngFind.Offset(0, 10).Value = WorksheetFunction.Proper(TextBox35.Text)
     If IsNumeric(TextBox36.Text) Then rngFind.Offset(0, 11).Value = CDate(WorksheetFunction.Proper(TextBox36.Text))
     If IsNumeric(TextBox37.Text) Then rngFind.Offset(0, 12).Value = CDate(WorksheetFunction.Proper(TextBox37.Text))
     If IsNumeric(TextBox38.Text) Then rngFind.Offset(0, 13).Value = CDate(WorksheetFunction.Proper(TextBox38.Text))
     If IsNumeric(TextBox39.Text) Then rngFind.Offset(0, 14).Value = CInt(WorksheetFunction.Proper(TextBox39.Text))
     rngFind.Offset(0, 15).Value = WorksheetFunction.Proper(TextBox40.Text)
     rngFind.Offset(0, 16).Value = WorksheetFunction.Proper(TextBox41.Text)
     
   
     lLetzte = IIf(.Range("A65536") <> "", 65536, .Range("A65536").End(xlUp).Row) + 1
     If lLetzte < 2 Then lLetzte = 2
     
     

  End With
 
  Application.ScreenUpdating = True
 

'Formular Löschen
 For Each ctrElement In Controls
   Select Case TypeName(ctrElement)
     Case "TextBox": ctrElement = ""
     'Case "ListBox": ctrElement = ""
   End Select
 Next
 
'Listbox löschen
ListBox1.Clear

'Textfelder, Schalter sperren, entsperren und sichtbar und unsichtbar machen
'...gekürzt

End Sub


Angehängte Dateien
.xlsm   VBARecht - Kopie.xlsm (Größe: 86,77 KB / Downloads: 10)
Antworten Top
#25
Hallöchen,

wenn ich es richtig gesehen habe, fängst Du, egal wo Du suchst, immer in der Suchspalte mit den Einträgen an:

rngFind.Offset(0, 0).Value = WorksheetFunction.Proper(TextBox27.Text)

Du hast hier keine Unterscheidung nach der Suchspalte. Das Aktenzeichen gehört aber immer in Spalte B.
Beim Auslesen der Daten hast Du es gut getroffen, dort fängst Du bei 0, -1 oder -2 mit dem Offset an.

Allerdings ist mir noch unklar, wieso nicht alle Einträge verschoben sein sollen:
Zitat:
Suche ich in Spalte B, schiebt er ab E alles um eins nach rechts...

Eventuell ist das ein Ansatz:
Set rngFind = .Cells(rngFind.Row, 2)

Wenn Du die Zeile an den Anfang des Makros zum Eintragen setzt, wird die Zelle immer in die Spate B gelegt - Textbox27 ist das Aktenzeichen aus Spalte B.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#26
Zitat:Allerdings ist mir noch unklar, wieso nicht alle Einträge verschoben sein sollen

Da war ich wohl verhuschelt. Bin alle Zeilen durchgegangen und da zeigte sich mal wieder, mit dem Zählen ist so eine Sache.

Zitat:Eventuell ist das ein Ansatz:
Code:
Set rngFind = .Cells(rngFind.Row, 2)

Ist es! Vielen Dank!!!
Antworten Top


Gehe zu:


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