Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
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
Match-Fehler abfangen
Eddi
Hallo zusammen,
ich habe über VBA eine Match-Funktion erstellt, die mir in einem Sheet die erste Zeile nach einem bestimmten Benutzernamen durchsuchen soll. Wenn nichts gefunden wurde bekomm ich derzeit eine Fehlermeldung und das Programm stürzt ab. Wie kann ich das umgehen? Noch zur Info, wenn nichts gefunden wurde, soll in der Zelle rechts nebem dem letzten Eintrag der aktuelle Benutzer eingetragen werden. Die Variable UserNr gibt mir normalerweise die Spalte zurück mit der ich dann weiterarbeite.
Dim UserNr as Integer
Dim User as String
User = "Mustermann"
UserNr = Application.WorksheetFunction.Match(user, Sheets("User").Range("A1:Z1"), 0)
.....
Vielen Dank für Eure Hilfe
Eddi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Match-Fehler abfangen
11.05.2011 00:12:45
hary
Moin Eddi
als Ansatz.

Dim UserNr As Integer
Dim User As String
On Error GoTo nix
User = "Mustermann"
UserNr = Application.WorksheetFunction.Match(User, Sheets("User").Range("A1:Z1"), 0)
MsgBox UserNr
nix:
Sheets("User").Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column + 1) = Environ("Username")
gruss hary

AW: besser mit find
11.05.2011 00:28:21
hary
Hallo
Mit find geht's ohne Fehlerbehandlung.

Dim zelle As Range
Dim UserNr As Integer
Dim User As String
User = "Mustermann"
Set zelle = Worksheets("User").Range("A1:Z1").Find(What:=User, LookIn:=xlValues, lookat:= _
xlWhole)
If Not zelle Is Nothing Then
UserNr = zelle.Column
Else
Sheets("User").Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column + 1) = Environ("Username" _
)
End If
Set zelle = Nothing

gruss hary
Anzeige
AW: besser mit find
11.05.2011 00:37:48
Eddi
Super, vielen Dank.
MfG
besser mit Mach
11.05.2011 08:39:41
Erich
Hi zusammen,
auch mit Match gehts ohne Fehlerbehandlung:

Sub aaaTest()
Dim strUser As String
Dim varZ As Variant, lngC As Long ' besser als Integer
strUser = "Mustermann"
With Sheets("User")
varZ = Application.WorksheetFunction.Match(strUser, .Range("A1:Z1"), 0)
MsgBox varZ
If Not IsNumeric(varZ) Then
lngC = .Cells(1, .Columns.Count).End(xlToLeft).Column + 1
.Cells(1, lngC) = Environ("Username")
End If
End With
End Sub
Noch eine Bemerkung zur Referenzierung: In der Zeile
Sheets("User").Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column + 1) = Environ(
beziehen sich Cells und Columns.Count in "Cells(1, Columns.Count)" auf das gerade aktive Blatt.
Sheets("User") steht zwar am Anfang der Zeile, bezieht sich aber nur auf das 1. Cells.
Da ist ein With meist sehr praktisch.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
besser mit Application.Match - Korrektur
11.05.2011 09:03:16
Erich
Hi zusammen,
wie Rudi schon schrieb: Besser ohne WorksheetFunction, also mit
varZ = Application.Match(strUser, .Range("A1:Z1"), 0)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW:@ Erich
11.05.2011 10:48:38
hary
Moin Erich
ja, hast Recht. Hatte zwei Codes, auch einmal mit with. Dann zwischendurch was anderes probiert und falschen Code gepostet
Leicht uebermuedet .
sry gruss hayr
Application.Match
11.05.2011 08:56:57
Rudi
Hallo,
am besten ohne Worksheetfunction
Dim UserNr as Variant
Dim User as String
User = "Mustermann"
UserNr = Application.Match(user, Sheets("User").Range("A1:Z1"), 0)
If Not IsError(UserNr) Then
End If

Gruß
Rudi
Anzeige
AW: Application.Match
11.05.2011 22:41:11
Eddi
Warum eigentlich ohne WorksheetFunktion? Gibt's da irgendein Unterschied?
Gruß, Eddi
AW: Unterschied
12.05.2011 11:40:22
Rudi
Hallo,
ja, den gibt es.
x=Worksheetfunction.Match(...) ergibt einen Laufzeitfehler 1004, wenn der Suchbegriff nicht gefunden wird (Die Match-Eigenschaft des Worksheetfunction-Objekts kann nicht zugewiesen werden). Das kannst du nur mit On Error abfangen.
x=Application.Match(...) hingegen weist x den Fehlerwert (Fehler 2042) zu. Das kannst du dann abfragen.
If IsError(x) Then ...
Dito für VLOOKUP, HLOOKUP,..
Gruß
Rudi

23 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige