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

IdentNr.

IdentNr.
22.05.2007 15:21:00
John
Hallo,
ich habe folgendes Problem:
Habe folgendes Makro:
'
' FindIdent: durchsucht Spalte AD nach passender IdentNr
' bei Treffer werden die Werte übertragen

Sub FindIdent(IdentNr As String)
Dim Treffer As Range
Dim Zeile As Long
Columns("AD:AD").Select
Range("AD60").Activate
Selection.Find(What:=IdentNr, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Set Treffer = Application.ActiveCell
If Not Treffer Is Nothing Then
Zeile = Treffer.Row
CopyValues (Zeile)
End If
Range("A1").Select
End Sub


Damit wird in der Spalte AD nach einer IdentNr. gesucht, wurde diese gefunden werden bestimmte Werte in bestimmte Zellen kopiert.
Ich möchte das wie folgt abändern:
Wird keine IdentNr. gefunden, soll in einer Zelle die Meldung Kommen: " Nicht möglich "
Wird eine IndentNr. gefunden soll wie bisher kopiert werden.
Wer kann mir helfen ?
Vielen Dank im voraus
Gruß
John

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: IdentNr.
22.05.2007 15:56:40
Dan
Hi John, ich denke es koennte so sein:

Sub FindIdent(IdentNr As String)
Dim Treffer As Range
Dim Zeile As Long
Columns("AD:AD").Select
Range("AD60").Activate
Selection.Find(What:=IdentNr, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Set Treffer = Application.ActiveCell
If Not Treffer Is Nothing Then
Zeile = Treffer.Row
CopyValues (Zeile)
else
Range("A1").value = "nicht moeglich ..."
End If
Range("A1").Select
End Sub


Gruss Dan, cz.

Anzeige
AW: IdentNr.
22.05.2007 16:30:00
John
Hi Dan,
vielen Dank,
funktioniert leider nicht !
Was bedeutet: If not Treffer is nothing Then ?
Ist das nicht gleichbedeutend mit:
If Treffer Then ( funktioniert nicht !!? )
Versteh ich nicht ?
Gruß John

AW: IdentNr.
23.05.2007 07:49:00
John
Hallo,
kann mir hierbei nochmal jemand helfen ?
Vielen Dank
John

AW: IdentNr.
23.05.2007 09:46:00
Dan
Hi John, versuch es damit :

Sub FindIdent(IdentNr As String)
Dim Treffer As Range
Dim Zeile As Long
Dim findResult
Columns("AD:AD").Select
Range("AD60").Activate
Set findResult = Selection.Find(What:=IdentNr, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
Set Treffer = Application.ActiveCell
If Not Treffer Is Nothing Then
Zeile = Treffer.Row
CopyValues (Zeile)
End If
Range("A1").Select
End Sub


Anzeige
Da dir diese Frage noch keiner...
25.05.2007 03:41:00
Luc:-?
...beantwortet hat, John;
If Not Treffer Is Nothing Then bedeutet, dass die folgenden Anweisungen bis zum End If nur ausgeführt wdn, wenn das RangeObjekt Treffer vorhanden ist, also nicht auf Nothing=Nichts zeigt. Das kannst du nicht anders allgemein abfragen, denn das Gegenteil von Nichts wäre ja ein konkretes Objekt! Etwas gibt es in VBA nicht!
Übrigens kann ein Button auf dem ein Prozeduraufruf liegt, auch keine Parameter an diese Prozedur übergeben. Ich vermute deshalb, dass auf dem Button eine Ereignisprozedur liegt (Klassenmodul des Buttons), die die von dir gepostete Subroutine parametriert aufruft. Kontrolliere doch mal, was da passiert!
Gruß Luc :-?

Anzeige
AW: IdentNr.
23.05.2007 08:16:00
Jan3
Hi John,
Was funktioniert nicht? Dan hat in Deiner If-THEN - Anweisung doch eine Else-Verzweigung eingebaut für den Fall, wenn kein Wert gefunden wurde.
Jan

AW: IdentNr.
23.05.2007 08:44:00
John
Hallo Jan,
ich bekomme folgende Fehlermeldung:
Laufzeitfehler 91:
Objektvariable oder With-Blockvariable nicht festgelegt !
Die Stelle:
Selektion.Find ( What:= .........
ist dann gelb hinterlegt.
Hilft Dir das ?
Gruß
John

AW: IdentNr.
23.05.2007 09:30:00
Jan3
Hi John,
Wie übergibst Du die IdentNr? Die scheint zu fehlen!
Lief Dein Makro vorher?
Jan

AW: IdentNr.
23.05.2007 09:41:00
John
Hallo Jan,
mein Makro lief vorher.
Unterschied vorher-nachher:
Vorher:Alle Ident-Nr. nach denen gesucht werden konnte, waren vorhanden.
Nachher: Es kann auch eine Ident-Nr., nach der gesucht wird, nicht vorhanden sein !
Gruß
John

Anzeige
AW: IdentNr.
23.05.2007 09:47:00
Jan3
Hi John,
Ich meine, wie startest Du das Makro? Dein Makro brauchst zur Ausführung den Parameter "IdentNr"!
Vielleicht solltest Du mal eine Beispielmappe ins Forum stellen.
Jan

AW: IdentNr.
23.05.2007 10:04:02
John
Hallo Jan,
mein Makro wird über einen
CommandButton gestartet
Inhalt desButtons:
FindIdent Range ("D83").Text
In D83 steht meine IdentNr ( z.B. LM50LM200 ) nach der in Spalte AD gesucht wird.
Hilft Dir das ?
Wenn nicht, versuche ich eine Beispielmappe ins Forum zu stellen.
Gruß
John

AW: IdentNr.
25.05.2007 10:12:08
mpb
Hallo John,
wenn der Suchbegriff nicht gefunden wird, tritt der Laufzeitfehler 91 auf (siehe Dein anderes Posting). Du musst den Fall mit einer On Error-Anweisung abfangen. Basierend auf Deinem Makro etwa so (ungetetstet):

Sub FindIdent(IdentNr As String)
Dim Treffer As Range
Dim Zeile As Long
On Error GoTo errorhandler
Columns("AD:AD").Select
Range("AD60").Activate
Selection.Find(What:=IdentNr, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Set Treffer = Application.ActiveCell
If Not Treffer Is Nothing Then
Zeile = Treffer.Row
CopyValues (Zeile)
End If
Range("A1").Select
Exit Sub
errorhandler:
MsgBox "Kein Treffer"
End Sub


In Deinem Makro sind die vielen Selects, Activates und Avtivecells allerdings überflüssig. Ich habe den Code mal gekürzt, konnte ihn aber nicht vollständig testen, da CopyValues ja wohl ein weiteres Makro ist. Statt dieser Codezeile habe ich "MsgBox Zeile" verwendet, damit hat das gekürzte Makro einwandfrei funktioniert.


Sub FindIdent_neu(IdentNr As String)
Dim Zeile As Long
IdentNr = "Test1"
On Error GoTo errorhandler
Zeile = Columns("AD:AD").Find(What:=IdentNr, After:=Range("AD60"), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Row
MsgBox Zeile 'CopyValues (Zeile)
Exit Sub
errorhandler:
MsgBox "Kein Treffer"
End Sub


Gruß
Martin

Anzeige
AW: IdentNr.
25.05.2007 11:41:10
John
Hall o Martin,
vielen Dank für Deine Mühen !
Das Makro läuft.
Gruß
John

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige