Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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
Userforms - EMailadresse in formular suchen
05.10.2019 23:12:17
Manfred
Hallo Experten.
Ich habe eine Userforms und darin ein Textfeld Tex_Mail1, indem ich eine Mailadresse eingebe.
Diese Mailadresse wird in einem Worksheet in der Spalte I (Columns(9)) gesucht, und wenn gefunden dann werden die Daten von Spalte A (Textfeld Tex_benu1), Spalte B (Textfeld tex_ID1) ausgegeben.
mit folgendem Code war alles o.k.
Nur hat sich nun der Ort der Mailadresse geändert. Die Mailadresse ist jetzt nicht mehr zwingend in Spalte I zu finden, sondern in einer beliebigen Spalte.
Jetzt habe ich keinen Plan, wie ich mein Problem nun lösen könnte
Wäre echt dankbar, wenn mir jemand eine Hilfestellung gibt.
Hier der wichtige Teil des funktionierenden Codes:
If Len(Trim$(Tex_Mail1)) Then
Tex_benu1 = "": tex_ID1 = ""
For Each objWB In Application.Workbooks
If objWB.FullName = cstrFile Then bolAlreadyOpen = True: Exit For
Next
If objWB Is Nothing Then Set objWB = Workbooks.Open(cstrpath & cstrFile1)
With objWB
Set objRange = .Sheets(cstrTab).Columns(9).Find(What:=Tex_Mail1, LookAt:=xlWhole, _
LookIn:=xlValues, MatchCase:=False, SearchFormat:=False)
If Not objRange Is Nothing Then
Tex_benu1 = objRange.Offset(0, -7)
tex_ID1 = objRange.Offset(0, -8)
Else
MsgBox "E-Mailadresse nicht gefunden!"
End If
If Not bolAlreadyOpen Then .Close False
End With
Else
MsgBox "Bitte eine E-Mailadresse eingeben", vbCritical
Exit Sub
End If

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userforms - EMailadresse in formular suchen
06.10.2019 02:11:26
Peter
Hallo Manfred,
eine E-Mail-Adresse erkennt man durch das AT-Zeichen. Mit dem folgenden Code kannst Du die E-Mail-Adr. auf dem gesamten Arbeitsblatt suchen.
Sub Makro1()
'E-Mail-Adresse finden
On Error GoTo Fehler
Cells.Find(What:="@", After:=Range("a1"), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Exit Sub
Fehler:
MsgBox "Es wurde keine E-Mail-Adresse gefunden."
End Sub
Mit freundlichem Gruß
Peter Kloßek
Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 08:31:11
Beverly


Anzeige
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 14:32:50
Manfred
Danke für die Antworten.
Ich erhalte nach dem Austausch von Columns (9) auf Cells eine Fehlermeldung. Das liegt wohl an der statischen Einstellung von:
Tex_benu1 = objRange.Offset(0, -7)
tex_ID1 = objRange.Offset(0, -8)
Da wird von der Spalte i aus gezählt. Wie kann ich dies variable einstellen, damit beim finden der Mailadresse, egal aus welcher Spalte, die Daten der Spalte A und B aus der Zeile gelesen werden?
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 14:51:50
Nepumuk
Hallo Manfred,
so:
Tex_benu1.Text = .Sheets(cstrTab).Cells(objRange.Row, 1).Value
tex_ID1.Text = .Sheets(cstrTab).Cells(objRange.Row, 2).Value

Gruß
Nepumuk
Anzeige
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 18:32:05
Manfred
Danke für die Hilfe.
Es funktioniert fast. Ich erhalte zwar die richtigen Anzeigen, d.h. die Felder werden richtig gefüllt, aber ich erhalte einen 1004 Fehler. Da muss im Ablauf noch etwas nicht richtig laufen, bzw. schließt sich das autom. geöffnete Excelsheet nicht.
Blattschutz drauf? o.w.T.
06.10.2019 18:37:28
Werner
AW: Blattschutz drauf? o.w.T.
06.10.2019 18:55:31
Manfred
Nein - kein Blattschutz!
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 18:56:34
Nepumuk
Hallo Manfred,
kann ich nicht nachvollziehen. Der Code ist augenscheinlich ok. Welche Zeile markiert der Debugger?
Gruß
Nepumuk
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 22:31:51
Manfred
ICh erhalte bei Meldung: Anwendungs oder objectdefinierter Fehler. und zwar seit ich Columns (9) gegen Cells getauscht habe!
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
06.10.2019 23:10:02
Beverly
Hi Manfred,
wie sieht denn deine komplette Codezeile jetzt aus? Sie müsste wie folgt aussehen:
Set objRange = .Sheets(cstrTab).Cells.Find(What:=Tex_Mail1, LookAt:=xlWhole, _
LookIn:=xlValues, MatchCase:=False, SearchFormat:=False)


Anzeige
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
07.10.2019 11:53:27
Manfred
o.k. ich habe den o.g. Code eingegeben und nun erhalte ich immer noch die Fehlermeldung:
Prozedur: cmd_dbExcel_Click
Nummer: 1004
Meldung: Anwendungs- oder objektdefinierter Fehler
AW: Ersetze .Columns(9) durch .Cells - o.w.T.
07.10.2019 12:03:36
Manfred
Sobald ich Columns (9) wieder einfüge und Cells entferne, funktionierts wieder fehlerfrei.
Lade deine Mappe hoch - o.w.T.
07.10.2019 14:53:53
Beverly


AW: Lade deine Mappe hoch - o.w.T.
07.10.2019 15:10:29
Manfred
Welche Mappe?
AW: Lade deine Mappe hoch - o.w.T.
07.10.2019 15:16:10
Beverly
Na deine Mappe mit dem Code, welcher bei dir einen Fehler auslöst wenn du .Columns(9) durch .Cells ersetzt...


AW: Lade deine Mappe hoch - o.w.T.
07.10.2019 20:38:21
Manfred
Hier der komplette Code:
------------------------
Private Sub cmd_dbExcel_Click()
Dim objWB As Object, objRange As Object, bolAlreadyOpen As Boolean
Dim strpfad As String
Dim cstrFile As String
Dim cstrFile1 As String
Dim vorn As String
Dim famn As String
Dim nam As String
Dim tex As String
Dim tex1 As String
Dim vb As Variant
Const cstrTab As String = "compliance-report_"
Const cstrpath As String = "D:\Test\At_Excel\"
On Error GoTo ErrorHandler
With Application
.ScreenUpdating = False
.EnableEvents = False
.AskToUpdateLinks = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
cstrFile = Dir(cstrpath & "compliance-report*.xlsx")
MsgBox cstrpath & "compliance-report*.xlsx"
Do While cstrFile ""
cstrFile1 = cstrFile
cstrFile = Dir
Loop
If MsgBox("Folgende Datei wird verwendet: " & vbLf & vbLf & cstrFile1, vbYesNo + vbInformation) = vbYes Then
Else
Exit Sub
End If
If Len(Trim$(Tex_Mail)) Then
Tex_benu = "": tex_ID = ""
For Each objWB In Application.Workbooks
If objWB.FullName = cstrFile Then bolAlreadyOpen = True: Exit For
Next
If objWB Is Nothing Then Set objWB = Workbooks.Open(cstrpath & cstrFile1)
With objWB
'Set objRange = .Sheets(cstrTab).Cells.Find(What:=Tex_db_Mail, LookAt:=xlWhole, _
LookIn:=xlValues, MatchCase:=False, SearchFormat:=False)
Set objRange = .Sheets(cstrTab).Columns(9).Find(What:=Tex_db_Mail, LookAt:=xlWhole, _
LookIn:=xlValues, MatchCase:=False, SearchFormat:=False)
If Not objRange Is Nothing Then
Tex_benu = .Sheets(cstrTab).Cells(objRange.Row, 1).Value
tex_ID = .Sheets(cstrTab).Cells(objRange.Row, 2).Value
Else
MsgBox "E-Mailadresse nicht gefunden!"
End If
If Not bolAlreadyOpen Then .Close False
End With
Else
MsgBox "Bitte eine E-Mailadresse eingeben", vbCritical
Exit Sub
End If
With Application
.ScreenUpdating = True
.EnableEvents = True
.AskToUpdateLinks = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
Set objWB = Nothing
Set objRange = Nothing
ErrorHandler:
If Err.Number 0 Then
MsgBox "Fehler in UserForm1" & vbLf & vbLf & "Prozedur:" & vbTab & "cmd_dbExcel_Click" & vbLf & _
"Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!"
Err.Clear
End If
Anzeige
AW: Lade deine Mappe hoch - o.w.T.
07.10.2019 21:23:15
Nepumuk
Hallo Manfred,
nochmal, welche Zeile markiert der Debugger?
Gruß
Nepumuk

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige