Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
992to996
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
992to996
992to996
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Find und Datum

Find und Datum
10.07.2008 15:45:18
Alex
Hallo,
in einer Tabelle suche ich mit folgendem VBA Code nach einem Datum...oder besser ich versuche es.
Die Suche löse ich per Schaltfläche in einem Formular aus. Die gesuchten Werte werden auch in das Formular übertragen.
Trage ich in die TextBox1 den "Excel Wert" also z.B. 39456 und habe ich auch das Sheet so formatiert klappt die Suche. Mit dem Datum tt.mm.jj klappt es aber nicht.

Private Sub CoBuMainSCsearch_Click()
Set frm2 = UserForm2
With frm2
Sheets("SCdata2").Select
Range("G:G").Select
On Error GoTo fehler
Selection.Find(What:=.TextBox1.Value, _
After:=ActiveCell, _
LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
.TextBox2.Value = ActiveCell.Offset(0, 5).Value
.TextBox3.Value = ActiveCell.Offset(0, -6).Value
.TextBox4.Value = ActiveCell.Offset(0, -3).Value
.TextBox5.Value = ActiveCell.Offset(0, -4).Value
.TextBox7.Value = ActiveCell.Offset(0, 1).Value
.TextBox6.Value = ActiveCell.Offset(0, -2).Value
.TextBox8.Value = ActiveCell.Offset(0, 2).Value
.TextBox20.Value = ActiveCell.Offset(0, 6).Value
.TextBox21.Value = ActiveCell.Offset(0, 7).Value
.TextBox22.Value = ActiveCell.Offset(0, 8).Value
.TextBox23.Value = ActiveCell.Offset(0, 9).Value
.TextBox24.Value = ActiveCell.Offset(0, 10).Value
'If ActiveCell.Offset(0, 5).Value = "1" _
'Then .OpBuSCyes.Value = True
'Else .OpBuSCno.Value = False Range("A1").Select
' Exit Sub
fehler:
MsgBox "Keine Reisedaten zu Datum : " & _
.TextBox1.Value & " vorhanden!"
End With
End Sub


Wäre toll wenn mir jemand sagen kann wie das Datum umgewandelt werden muss.
Merci

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Find und Datum
10.07.2008 15:49:56
Hajo_Zi
Hallo Nick,
ich habe dazu gerade was in einem Buch gelesen. Vor Find
Aplication.FindFormat.NumberFormat="m/d/yyy"
und bei find den ParamterSearchFormat:=True
ergänzen. Dies gilt nur bei Suche von Datum.

AW: Find und Datum
10.07.2008 15:50:00
Paddy
Hallo!
Versuch mal, ob Application.text (Wert,"TT.MM.JJJJ") funktioniert
Grüße
Paddy

AW: Find und Datum
10.07.2008 16:01:47
Alex
Hallo Paddy,
danke für die schnelle Antwort....
bin jetzt nicht so der VBA Crack...wo muss ich den Application.text einbinden?
grüsse

AW: Find und Datum
10.07.2008 16:29:00
Gerd
Hallo Alex,
teste mal dies, bevor Du Einstellungen änderst.

Sub a()
Dim rng As Range, Such
Such = CDate("10.07.08")
On Error Resume Next
Set rng = Columns(6).Find(Such, LookIn:=xlValues, lookat:=xlWhole)
On Error GoTo 0
If Not rng Is Nothing Then
MsgBox rng.Address
MsgBox rng.Row
MsgBox rng.Column
Else
MsgBox "Nix gefunden!"
End If
End Sub


Gruß Gerd

Anzeige
AW: Find und Datum
10.07.2008 17:39:00
Erich
Hi Tino,
das funzt, weil du nach xlFormulas suchst, nicht nach xlValues.
Was aber, wenn in den Zellen tatsächlich Formeln stehen, z. B. =A6+0 (bei unveränderten Formaten)?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

mit dem Tipp von Hajo
10.07.2008 18:17:39
Hajo
Hallo Erich,
na dann funktioniert der Tipp von Hajo wunderbar, habe ich soeben getestet.

Sub finDatum()
Dim Zelle As Range
Dim strDatum As String
Application.FindFormat.NumberFormat = "m/d/yyyy"
strDatum = Replace(CStr(Format(Date, "m/d/yyyy")), ".", "/")
Set Zelle = Range("A:A").Find(strDatum, , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Set Zelle = Nothing
Application.FindFormat.NumberFormat = "d/m/yy;@"
strDatum = Replace(CStr(Format(Date, "d/m/yy;@")), ".", "/")
Set Zelle = Range("B:B").Find(strDatum, , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Set Zelle = Nothing
Application.FindFormat.NumberFormat = "d/m;@"
strDatum = Replace(CStr(Format(Date, "d/m;@")), ".", "/")
Set Zelle = Range("C:C").Find(strDatum, , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Set Zelle = Nothing
Application.FindFormat.NumberFormat = "dd/mm/yy;@"
strDatum = Replace(CStr(Format(Date, "dd/mm/yy;@")), ".", "/")
Set Zelle = Range("D:D").Find(strDatum, , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Set Zelle = Nothing
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: @ Tino - zum Tipp von Hajo
10.07.2008 21:20:00
Hajo
Hi Tino,
nur so zum Spaß - probier doch mal

Sub findFormats()
Dim Zelle As Range
Dim strDatum As String
Application.FindFormat.NumberFormat = "m/d/yyyy"
Set Zelle = Cells.Find("", , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Application.FindFormat.NumberFormat = "d/m/yy;@"
Set Zelle = Cells.Find("", , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Application.FindFormat.NumberFormat = "d/m;@"
Set Zelle = Cells.Find("", , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
Application.FindFormat.NumberFormat = "dd/mm/yy;@"
Set Zelle = Cells.Find("", , xlValues, , xlWhole, , , , True)
Debug.Print Zelle.Address
End Sub
Sub findDatum()
Dim Zelle As Range
Dim strDatum As String
strDatum = Replace(CStr(Format(Date, "m/d/yyyy")), ".", "/")
Set Zelle = Cells.Find(strDatum, , xlValues, , xlWhole, , , , False)
Debug.Print Zelle.Address
strDatum = Replace(CStr(Format(Date, "d/m/yy;@")), ".", "/")
Set Zelle = Cells.Find(strDatum, , xlValues, , xlWhole, , , , False)
Debug.Print Zelle.Address
strDatum = Replace(CStr(Format(Date, "d/m;@")), ".", "/")
Set Zelle = Cells.Find(strDatum, , xlValues, , xlWhole, , , , False)
Debug.Print Zelle.Address
strDatum = Replace(CStr(Format(Date, "dd/mm/yy;@")), ".", "/")
Set Zelle = Cells.Find(strDatum, , xlValues, , xlWhole, , , , False)
Debug.Print Zelle.Address
End Sub

am besten in dieser Mappe:
https://www.herber.de/bbs/user/53746.xls
Mit FindFormat wird die Suche EINGESCHRÄNKT auf ein bestimmtes Format.
Mehr wird dadurch sicher nicht gefunden.
Ich stelle mir gerade vor:
Ich schreibe ein Makro - für fremde Benutzer - und verwende darin ein Find nach einem Datum.
(Auch Formelergebnisse sollen gefunden werden.)
Muss ich jetzt dem Benutzer vorschreiben, wie das Datum formatiert sein muss,
damit der Find funzt?
Oder analysiere ich vor dem Find erst mal, welche Datumsformate im Suchbereich vorkommen,
um richtig suchen zu können?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: @ Tino - zum Tipp von Hajo
11.07.2008 08:15:04
Hajo
Hallo Erich und einen Guten Morgen,
bin gerade von der Nachtschicht gekommen.
ja ist schon klar, dass so die erste gefundene Zelle mit diesem Format zurückgegeben wird.
Aber ohne diese Formateinschränkung, Funktioniert die Suche nach einem Datum nicht.
Bisher hatte ich dieses Vergnügen noch nicht, dass die Datumsliste aus Formeln besteht, höchstens der Suchwert der in einer bestimmten Zelle zur Verfügung steht.
Naja im schlimmsten Fall müsste eine Hilfsspalte herhalten, die dass Zellformat kurz zwischenlagert
(wie unten im Code dargestellt), wollte dies mit der Match Funktion nachbauen (speziell FindNext) ist mir aber leider misslungen. Kennst Du eine Lösung dafür?
Habe dies Zeitmäßig nicht nachgemessen, aber ich denke eine simple Schleife wird unter 100000 Zeilen nicht viel langsamer sein.

Sub SuchDatum()
Dim Bereich As Range, Zelle() As Range, AktuelleZelle As Range
Dim SuchDatum As Long, Werte As Long, A As Long
SuchDatum = Date 'Suchdatum
Set Bereich = Range("A:A")
Set AktuelleZelle = Selection
With Application
.ScreenUpdating = False
With Bereich
.Copy
.Offset(0, Columns.Count - 1).PasteSpecial (xlPasteFormats)
.NumberFormat = "General"
Werte = Application.WorksheetFunction.CountIf(Bereich, SuchDatum)
If Werte > 0 Then
ReDim Zelle(Werte)
For A = 1 To Werte
If A = 1 Then
Set Zelle(A) = .Find(SuchDatum)
Else
Set Zelle(A) = .FindNext(Zelle(A - 1))
End If
Next A
End If
.Offset(0, Columns.Count - 1).Copy
.PasteSpecial (xlPasteFormats)
.Offset(0, Columns.Count - 1).NumberFormat = "General"
End With
AktuelleZelle.Select
.CutCopyMode = False
.ScreenUpdating = False
End With
For A = 0 To UBound(Zelle) - 1
Debug.Print Zelle(A + 1).Address
Next A
Erase Zelle
Set Bereich = Nothing
Set AktuelleZelle = Nothing
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: @ Erich
10.07.2008 17:59:13
Gerd
Hi Erich,
ja, jetzt hast Du mich voll erwischt, kann 's einfach nicht lassen :-)
Und Versionsabhängig ist Find --- Date auch noch.
Die Fehlerbehandlung schreibe ich gewohnheitsmäßig drumrum.
Sie ist aber nur erforderlich, wenn direkt eine Range-Eigenschaft ausgelesen wird.
Andere Frage:
Wie bekomme ich bei Application.Match eine Bedingung z.B "> 0" ins Suchargument ?
Viele Grüße
Gerd

AW: @ Gerd
10.07.2008 21:57:58
Erich
Hi Gerd,
jetzt stehe ich etwas auf dem Schlauch:
"Versionsabhängig ist Find --- Date auch noch" - Woraus ergibt sich das denn?
Und deine Frage nach "> 0" im Suchargument bei Application.Match verstehe ich auch nicht.
Application.Match ist doch nur die Tabellenfunktion VERGLEICH, da muss das Suchkriterium ein Wert sein.
Was ginge, wäre bei einer sortierten Suchmatrix die Verwendung des Vergleichstyps -1 oder 1.
Meinst du vielleicht so etwas?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: @ Erich
10.07.2008 23:38:32
Gerd
Hallo Erich,
weil mein xl2000 weder Application.FindFormat noch das Argument Searchformat kennt
u. Tino 's Beispiele bei mir nicht durchlaufen.
Zu meiner anderen Frage: Da hatte ich in eine Aussage in der Hilfe, dass Wahrheitswerte als
Suchargument bei Match verwendet werden können, wohl zuviel hineininterpretiert.
Gruß Gerd

AW: Find und Datum
11.07.2008 09:15:00
Alex
Guten Morgen Gerd,
es ist ja ein belebter Schriftverkehr um meine Frage entstanden. Vielen Dank an alle!
Bin jetzt dabei herauszufinden welche Lösung für mich die passende ist, denn ich will ja im Anschluss anhand der gefundenen Zelle (mit Datum) ja auch noch die anderen Zellen der Zeile ins Formular laden.....
Da werde ich jetzt mal ganz scharf nachdenken müssen!!! Sollte mir noch jemand diesbezüglich einen Tipp geben können wie der VBA Code auzusehen hat wäre ich so schamlos, es auszunutzen ;-)
Vielen Dank nochmal, sollte ich es geschafft haben, lasse ich es Euch wissen....
Grüsse

Anzeige
AW: Find und Datum
10.07.2008 17:41:00
Erich
Hallo Alex,
versuchs mal ohne Find, dafür mit Application.Match:

Dim varZ ' as Variant
Sheets("SCdata2").Select
varZ = Application.Match(CLng(CDate(.TextBox1)), Range("G:G"), 0)
If IsError(varZ) Then
MsgBox "Eingabe nicht gefunden"
Exit Sub
End If
.TextBox2.Value = Cells(varZ, 9).Value
.TextBox3.Value = Cells(varZ, 11).Value

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Find und Datum
11.07.2008 10:03:47
Alex
Guten Morgen Erich,
bei diesem VBA Code bekomme ich die Meldung: Fehler beim Kompilieren: Unzulässiger oder nicht ausreichend definierter Verweis bei ....TextBox1
Grüsse Alex

Anzeige
AW: Find und Datum
11.07.2008 12:22:00
Gerd
Hallo Alex,
verstehe, in den Button-Click-Code : Call Suchen_und_Eintragen
und in ein allgemeines Modul:

Sub Suchen_und_Eintragen()
Dim varZ  As Variant, frm2 As UserForm, wsData As Worksheet
Set wsData = ThisWorkbook.Worksheets("SCdata2")
Set frm2 = UserForm2
varZ = Application.Match(CLng(CDate(frm2.TextBox1)), wsData.Columns(7), 0)
If Not IsNumeric(varZ) Then
MsgBox "Keine Reisedaten zu Datum : " & _
frm2.TextBox1.Value & " vorhanden!"
Exit Sub
End If
With wsData.Cells(CLng(varZ), 7)
frm2.TextBox2.Value = CStr(.Offset(0, 5).Value)
frm2.TextBox3.Value = CStr(.Offset(0, -6).Value)
frm2.TextBox4.Value = CStr(.Offset(0, -3).Value)
frm2.TextBox5.Value = CStr(.Offset(0, -4).Value)
frm2.TextBox7.Value = CStr(.Offset(0, 1).Value)
frm2.TextBox6.Value = CStr(.Offset(0, -2).Value)
frm2.TextBox8.Value = CStr(.Offset(0, 2).Value)
frm2.TextBox20.Value = CStr(.Offset(0, 6).Value)
frm2.TextBox21.Value = CStr(.Offset(0, 7).Value)
frm2.TextBox22.Value = CStr(.Offset(0, 8).Value)
frm2.TextBox23.Value = CStr(.Offset(0, 9).Value)
frm2.TextBox24.Value = CStr(.Offset(0, 10).Value)
End With
End Sub


Gruß Gerd

Anzeige
AW: Find und Datum
11.07.2008 15:27:00
Alex
Hallo Gerd,
ich probiere den Code jetzt mal aus...vielen Dank erstmal.
Grüsse Alex

AW: Find und Datum
11.07.2008 15:55:34
Alex
Hallo Gerd,
vielen vielen Dank, der Code funktioniert hervorragend!
Damit hast Du mein Wochenende gerettet. Ich habe noch viel zu lernen.....
Grüsse Alex

AW: Find und Datum
11.07.2008 16:19:33
Alex
Hallo Gerd,
jetzt muss ich doch nochmal nachfragen...da ich auch verstehen will wie dein Code arbeitet.
über die Application.Match vergleiche ich den Zelleninhalt, mit CDate wandelst Du das Datum um..
so richtig ?
nun schreibe ich diese daten auch wieder zurück in die Tabelle, dabei habe ich festgestellt, das ich einen
Versatz von 8 Zellen nach unten und 3 Zellen nach rechts habe. doch woraus resultiert dieser versatz denn?

Private Sub CoBuMainSCwrite_Click()
Set Frm = UserForm2                                                    'Abkürzung Frm anstelle  _
UserForm1
Sheets("SCdata").Activate                                           'Arbeitsblatt auswählen
'   Range("A65536").End(xlUp).Offset(1, 0).Select                     'Bereich der Zellen  _
definieren
With Frm                                                            'With Frm = kürzere  _
Schreibweise da frm.TextBox entfällt
'Search Daten reservierter Bereich TextBox 1 - 19
ActiveCell.Value = .TextBox1.Value
ActiveCell.Offset(0, 5).Value = .TextBox2.Value
ActiveCell.Offset(0, -6).Value = .TextBox3.Value
ActiveCell.Offset(0, -3).Value = .TextBox4.Value
ActiveCell.Offset(0, -4).Value = .TextBox5.Value
ActiveCell.Offset(0, -2).Value = .TextBox6.Value
ActiveCell.Offset(0, 1).Value = .TextBox7.Value
ActiveCell.Offset(0, 2).Value = .TextBox8.Value
'Abgabe Daten reservierter Bereich TextBox 20 - XX
ActiveCell.Offset(0, 6).Value = .TextBox20.Value
ActiveCell.Offset(0, 7).Value = .TextBox21.Value
ActiveCell.Offset(0, 8).Value = .TextBox22.Value
ActiveCell.Offset(0, 9).Value = .TextBox23.Value
ActiveCell.Offset(0, 10).Value = .TextBox24.Value
End With
End Sub


so der Plan...der leider nicht mehr funktioniert..
?
Grüse

AW: Find und Datum
11.07.2008 18:31:24
Erich
Hallo Alex,
der Versatz kommt wohl daher, dass du in der Write-Prozedur von der zufällig gerade aktiven Zelle ausgehst,
und die ist wohl nicht da, wo du es erwartest.
Ich gehe jetzt von zweierlei aus:
1. Der Code steht im Modul der UserForm2.
2. Die Daten sollen in die Zeile zurückgeschrieben werden, von der aus sie eingelesen wurden.
(Gelesen wird von Blatt "SCdata2", geschrieben wird in Blatt "SCdata" - ist das OK?)
Probier mal (im Code der UserForm2):

Option Explicit
Dim lngZ As Long
Private Sub CoBuMainSCsearch_Click()
Dim varZ As Variant
With Worksheets("SCdata2")
varZ = Application.Match(CLng(CDate(TextBox1)), .Columns(7), 0)
If Not IsNumeric(varZ) Then
MsgBox "Keine Reisedaten zu Datum: " & TextBox1 & " vorhanden!"
Exit Sub
End If
lngZ = CLng(varZ)
TextBox2 = .Cells(lngZ, 12)
TextBox3 = .Cells(lngZ, 1)
TextBox4 = .Cells(lngZ, 4)
TextBox5 = .Cells(lngZ, 3)
TextBox7 = .Cells(lngZ, 8)
TextBox6 = .Cells(lngZ, 5)
TextBox8 = .Cells(lngZ, 9)
TextBox20 = .Cells(lngZ, 13)
TextBox21 = .Cells(lngZ, 14)
TextBox22 = .Cells(lngZ, 15)
TextBox23 = .Cells(lngZ, 16)
TextBox24 = .Cells(lngZ, 17)
End With
End Sub
Private Sub CoBuMainSCwrite_Click()
Sheets("SCdata").Activate                'Arbeitsblatt auswählen
If lngZ = 0 Then
MsgBox "Vorherige Suche war nicht erfolgreich?"
Exit Sub
Else
'Search Daten reservierter Bereich TextBox 1 - 19
Cells(lngZ, 7) = TextBox1
Cells(lngZ, 12) = TextBox2
Cells(lngZ, 1) = TextBox3
Cells(lngZ, 4) = TextBox4
Cells(lngZ, 3) = TextBox5
Cells(lngZ, 8) = TextBox6
Cells(lngZ, 5) = TextBox7
Cells(lngZ, 9) = TextBox8
'Abgabe Daten reservierter Bereich TextBox 20 - XX
Cells(lngZ, 13) = TextBox20
Cells(lngZ, 14) = TextBox21
Cells(lngZ, 15) = TextBox22
Cells(lngZ, 16) = TextBox23
Cells(lngZ, 17) = TextBox24
End If
End Sub

Wesentlich ist, dass lngZ VOR der ersten Routine deklariert wird.
Dann ist die Zeillennr. auch noch bekannt, wenn die 2. Routine aufgerufen wird.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Find und Datum
12.07.2008 07:40:38
Erich
Hi Alex,
meine 2. Voraussetzung stimmt wohl nicht.
Sollen die Daten in Blatt "SCdata" hinter der letzten beschriebenen Zeile (Spalte G)
ausgegeben werden? Das ginge so:

Option Explicit
Private Sub CoBuMainSCsearch_Click()
Dim varZ As Variant, lngZ As Long
With Worksheets("SCdata2")
varZ = Application.Match(CLng(CDate(TextBox1)), .Columns(7), 0)
If Not IsNumeric(varZ) Then
MsgBox "Keine Reisedaten zu Datum: " & TextBox1 & " vorhanden!"
Exit Sub
End If
lngZ = CLng(varZ)
TextBox2 = .Cells(lngZ, 12)
TextBox3 = .Cells(lngZ, 1)
TextBox4 = .Cells(lngZ, 4)
TextBox5 = .Cells(lngZ, 3)
TextBox7 = .Cells(lngZ, 8)
TextBox6 = .Cells(lngZ, 5)
TextBox8 = .Cells(lngZ, 9)
TextBox20 = .Cells(lngZ, 13)
TextBox21 = .Cells(lngZ, 14)
TextBox22 = .Cells(lngZ, 15)
TextBox23 = .Cells(lngZ, 16)
TextBox24 = .Cells(lngZ, 17)
End With
End Sub
Private Sub CoBuMainSCwrite_Click()
Dim lngZ As Long
Sheets("SCdata").Activate                     'Arbeitsblatt auswählen
lngZ = Cells(Rows.Count, 7).End(xlUp).Row + 1 'Zeile nach letzter in Sp. G
'Search Daten reservierter Bereich TextBox 1 - 19
Cells(lngZ, 7) = TextBox1
Cells(lngZ, 12) = TextBox2
Cells(lngZ, 1) = TextBox3
Cells(lngZ, 4) = TextBox4
Cells(lngZ, 3) = TextBox5
Cells(lngZ, 8) = TextBox6
Cells(lngZ, 5) = TextBox7
Cells(lngZ, 9) = TextBox8
'Abgabe Daten reservierter Bereich TextBox 20 - XX
Cells(lngZ, 13) = TextBox20
Cells(lngZ, 14) = TextBox21
Cells(lngZ, 15) = TextBox22
Cells(lngZ, 16) = TextBox23
Cells(lngZ, 17) = TextBox24
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Find und Datum
13.07.2008 12:39:13
Alex
Hallo Erich,
ich habe das Arbeitsblatt umbenannt von SCdata2 in SCdata. Ich hätte aber wohl erst die anderen Problemem lösen sollen um keine Verwirrung zu verursachen.
Ich möchte sozusagen eine Tabelle (SCdata) vervollständigen. Ich suche nach einem Datum und lade mir einige Informationen die bekannt sind in mein Formular (diese Zellen sind dann inaktiv und ich kann sie nicht ändern) und ergänze dann über das Formular den Rest der Zeile. Insofern möchte ich also in die gleiche Zeile wieder schreiben aus der ich auch die Basis Info geladen habe.
Deine Hilfe die Daten in die nächste frei Zeile zu schreiben funktioniertm allerdings möchte ich ja in die gleiche Zeile schreiben. Dieser Code schreibt die Daten nicht zurück....woran kann es liegen?
Grüsse Alex
und auch ein schönes Wochenende

AW: Find und Datum
13.07.2008 17:28:17
Erich
Hallo Alex,
dann war es wohl doch der Code, den ich am 11.07.2008 18:31:24 gepostet habe.
Darin brauchst du nur noch SCdata2 bzw. SCdata richtig zu stellen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Find und Datum
14.07.2008 10:36:19
Alex
Hallo Erich,
ja das hat dann funktioniert. SUPER!
habe dann gemerkt, das die Suche nur in eine Richtung und immer basierend auf dem letzten Suchergebnis
abläuft.
Habe dann versucht den Start der Suche immer auf die erste Zelle der
Spalte G zu legen....aber irgendwie funktioniert das nicht per .select Befehl.
Hast Du eine andere Idee?

AW: Find und Datum
14.07.2008 13:57:00
Erich
Hallo Alex,
hast du den richtigen Code erwischt?
Zitat:
"dann war es wohl doch der Code, den ich am 11.07.2008 18:31:24 gepostet habe.
Darin brauchst du nur noch SCdata2 bzw. SCdata richtig zu stellen."
Application.Match(CLng(CDate(TextBox1)), .Columns(7), 0)
sucht immer in der ganzen Spalte G, und VERGLEICH fängt in der ersten Zeile an zu suchen,
das hängt nicht ab von der letzten Suche.
(So etwas passiert bei der Find-Methode - aber die nutze ich hier nicht.)
Ein Select braucht es nicht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Find und Datum
15.07.2008 20:45:25
Alex
Hallo Erich,
ja es ist der richtige Code....ich probiere das Probelm selber zu lösen, sollte ich es schaffen - gibt es hier die Auflösung. Wenn nicht, wende ich mich vertrauensvoll an Forum...
Grüsse Alex

AW: Find und Datum
13.07.2008 12:51:22
Alex
Hallo Erich,
ignoriere doch bitte meinen Post von vo 5 Minuten. Habe mal meinen Kopf eingeschaltet und Ordnung in meinen ("deinen"/"euren") Code gebracht und siehe da...es funktioniert wie gewünscht. muss jetzt nur noch dafür sorgen, das auch das datum wieder im richtigen Format gespeichert wir (Problem wenn nach /yy gesucht wurde aber /yyyy in der Basistabelle steht) doch das sollte zu schaffen sein.
Vielen Dank an alle die sich Zeit für das Problem genommen haben.
Grüsse Alex

AW: Find und Datum
11.07.2008 19:40:00
Gerd
Hallo Lemmi,
'ins Userform-Modul

Private Sub CoBuMainSCwrite_Click()
Call Zurückschreiben
End Sub


'in ein allgemeines Modul
Sub Zurückschreiben()
Dim frm As UserForm, wsAusgabe As Worksheet
'Objektverweise setzen, beschleunigt den Code etwas
Set frm = UserForm1
Set wsAusgabe = ThisWorkbook.Worksheets("SCdata")
'Ausgabebasis Zelle unter letzete gefüllter in Spalte G
With wsAusgabe.Cells(Rows.Count, 7).End(xlUp).Offset(1, 0)
'Search Daten reservierter Bereich TextBox 1 - 19
.Value = frm.TextBox1.Value
.Offset(0, 5).Value = frm.TextBox2.Value
.Offset(0, -6).Value = frm.TextBox3.Value
.Offset(0, -3).Value = frm.TextBox4.Value
.Offset(0, -4).Value = frm.TextBox5.Value
.Offset(0, -2).Value = frm.TextBox6.Value
.Offset(0, 1).Value = frm.TextBox7.Value
.Offset(0, 2).Value = frm.TextBox8.Value
'Abgabe Daten reservierter Bereich TextBox 20 - XX
.Offset(0, 6).Value = frm.TextBox20.Value
.Offset(0, 7).Value = frm.TextBox21.Value
.Offset(0, 8).Value = frm.TextBox22.Value
.Offset(0, 9).Value = frm.TextBox23.Value
.Offset(0, 10).Value = frm.TextBox24.Value
End With
End Sub


Versatz: Wenn Basis für den Offset die aktive Zelle ist, verschiebt sich leicht etwas.
Dies ist nämlich ganz einfach diese, die die Markierung hat.
über die Application.Match vergleiche ich den Zelleninhalt, mit CDate wandelst Du das Datum um..
so richtig ?

In etwa: Datenformat in Textboxen ist "Text". Dieser Wert wird beim Auslesen als "String" behandelt.
Bei Datumswerten wird in der Zelle das Datum als Text angezeigt.
Intern wird ein Datum in einer Tabellenblattzelle als Ganzzahl vom Typ Long verarbeitet.
Also muss die "Datums-Zeichenfolge" aus der Box in den Longwert von ihrem Datumswert umgewandelt werden, damit mit Zellenwerten in einem Tabellenbereich verglichen werden kann.
(kurz: Long-Datentyp mit Long-Datentyp)
Auf Aktivate, ActiveCell u. Select kann hier gänzlich verzichtet werden.
Da ist allenfalls ein Befehl erforderlich, wenn immer ein bestimmtes Tabellenblatt angezeigt werden soll.
Worksheet(..).Activate am Beginn des gesamten Codes oder am Schluss des gesamten Codes.
Ein schönes Wochenende
Gerd

AW: Habe mal wieder ...
11.07.2008 19:46:56
Gerd
gepennt.
Sorry Alex (nicht Lemmi)
...und hätte mir das Ganze, da Erich die Sache gelöst hat, schenken können. :-)
Grüße Gerd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige