Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
In nächste freie Zeile schreiben
01.09.2022 13:33:08
Andi
Servus zusammen,
ich habe einen Code geschrieben, den ich verwende um die Werte einer ausgefüllten Userform in die nächste freie Zeile zu schreiben. Das Projekt lag bei mir eine weile brach und ich bin der festen Überzeugung, dass der Code beim letzten mal funktioniert hat.
Nun tritt folgendes Problem auf:
- lasT zeigt mir die richtige freie Zeile an (In meinem Bsp. Zeile43)
- PalCompare ist in meinem Bsp. die 1
- rngPal zeigt mir 61 an ( Das müsste meines Erachtens dann die Zeile sein in der der Wert von PalCompare zu finden ist) . rngPal sollte aber nothing anzeigen, da es keine 1 gibt.

Sub WriteDataIntoTabele()
Dim lasT As Integer
lasT = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
Dim sRequest As Integer
sRequest = MsgBox("Bist du sicher, dass du das neue Werkzeug anlegen willst?", vbYesNo)
Dim PalCompare As Integer
'    PalCompare = newMouldForm.txtPalette.Value
PalCompare = 1
Dim rngPal As Range
Set rngPal = ActiveSheet.Range("B9:B1000").Find(PalCompare)  ' Suche letzte Zeile B1048576
'Sicherheitsabfrage
If sRequest = vbYes Then
' Prüfung ob Palettenplatz bereits belegt ist
If rngPal Is Nothing Then
ActiveSheet.Cells(lasT, 1) = newMouldForm.TxtCustomer.Value
ActiveSheet.Cells(lasT, 2) = newMouldForm.txtPalette.Value
ActiveSheet.Cells(lasT, 3) = newMouldForm.txtName.Value
ActiveSheet.Cells(lasT, 4) = newMouldForm.cBXType.Value
ActiveSheet.Cells(lasT, 5) = newMouldForm.txtVol.Value
ActiveSheet.Cells(lasT, 6) = newMouldForm.txtNo.Value
ActiveSheet.Cells(lasT, 7) = newMouldForm.txtNoNest.Value
ActiveSheet.Cells(lasT, 8) = newMouldForm.txtMa.Value
ActiveSheet.Cells(lasT, 9) = newMouldForm.cBXMaterial.Value
ActiveSheet.Cells(lasT, 10) = newMouldForm.cbxMachine.Value
ActiveSheet.Cells(lasT, 11) = newMouldForm.txtProd.Value
ActiveSheet.Cells(lasT, 12) = newMouldForm.txtYear.Value
ActiveSheet.Cells(lasT, 13) = newMouldForm.cBxCyc.Value
ActiveSheet.Cells(lasT, 14) = newMouldForm.txtInfo.Value
ActiveSheet.Cells(lasT, 15) = newMouldForm.txtKWZ.Value
ActiveSheet.Cells(lasT, 16) = newMouldForm.txtDorn.Value
ActiveSheet.Cells(lasT, 17) = newMouldForm.txtMappe.Value
Else
MsgBox "Der gewählte Palettenplatz ist bereits belegt. Bitte überprüfe deine Auswahl", vbOKOnly
End If
End If
End Sub
Ich weiß gerade nicht mehr weiter. Ich würde mich über jede hilfe freuen.
LG Andi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In nächste freie Zeile schreiben
01.09.2022 13:36:44
Andi
Edit.
Im Überwachungsfenster ist die Zahl 61 bei rngPal grau und nicht schwarz. Evtl. hilft die Information
AW: In nächste freie Zeile schreiben
01.09.2022 14:00:06
Andi
Mittlerweile habe ich herausgefunden, dass das Problem nur bei einstelligen Zahlen auftritt (bis 9) bei zweistelligen funktioniert es (z.B.10, 11 usw.).
Ich kann mir das leider nicht erklären
AW: In nächste freie Zeile schreiben
01.09.2022 14:40:26
Daniel
Hi
.FIND ist der VBA-Befehl, um die Excelmenüfunktion SUCHEN auszuführen.
Wenn du dir diese Funktion mal genauer anschaust, wirst du feststellen, dass sie neben dem Suchbegriff noch viele weitere Einstellmöglichkeiten hat. Beispielsweise kann man einstellen, ob der gesamte Zellinhalt mit dem Suchbegriff übereinstimmen muss oder ob es ausreicht, wenn nur ein Teil des Zellinhalts mit dem Suchbegriff übereinstimmt (Optionen - Gesamten Zellinhalt vergleichen).
Wenn diese Option aktiv ist, dann erzeugt jeder Wert, der eine "1" enthält, einen Treffer, also nicht nur 1, sondern auch 10, 21, usw, genommen wird der erste Treffer.
Du gibst jetzt in der .Find-Funktion nur den Suchbegriff an, aber nicht die anderen Parameter. In diesem Fall übernimmt Excel die Einstellungen, die bei der letzten Suche gemacht wurden, und zwar egal, ob die letzte Suche per Makro angewiesen wurde oder vom Anwender über das Menü.
Suche also mal was über das Menü, gehe dazu auch in die Optionen und setzte den Haken "Gesamten Zellinhalt vergleichen", jetzt sollte dein .FIND die 1 finden und nichts anderes.
Da man in einem Makro jetzt nicht von der letzten Suche abhängig sein will, sollte man diese Einstellungen so gut wie möglich selber vorgeben.
Wie das aussieht, siehst du in der Online-Hilfe zu der Funktion, oder wenn du die Suche von Hand ausführst und das ganze mit dem Recorder aufzeichnest. Man muss dann im Code nicht immer alle Parameter vorgeben, aber zumindest die wichtigsten, wie eben "Gesamten Zellinhalt vergleichen" oder ob in Werten oder Formeln gesucht werden soll, wenn der durchsuchte Zellbereich auch Formeln enthalten kann.
Gruß Daniel
Anzeige
AW: In nächste freie Zeile schreiben
01.09.2022 16:01:56
Andi
Vielen Dank, ich habe schon herausgefunden.
LG Andi
AW: In nächste freie Zeile schreiben
01.09.2022 14:29:41
Andi
Fehler gefunden!
Die find Funktion war unvollständig.
Folgender Code passt:

Set rngPal = Worksheets("Formenlager WZI 1+2").Range("B9:B1000").Find(PalCompare, Lookat:=xlWhole)

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige