Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1064to1068
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
Inhaltsverzeichnis

Change-Frage

Change-Frage
02.04.2009 22:30:42
Karsten
Hallo,
mir hat jemand dankenswerterweise bei Folgendem geholfen:

Private Sub Worksheet_Change(ByVal Target As Range)
Set n = Cells(1, 2).Find("T E R M I N E")
If n Is Nothing Then
Application.Run "finde_Inhalt_in_B"
Application.SendKeys "{F2}"
End If
End Sub


Sub finde_Inhalt_in_B()
Application.Run "stopptimer"
Dim Found As Range
Dim LoLetzte As Long
Dim sSearch As String
sSearch = Range("b1")
With Worksheets("Lehrbericht")
LoLetzte = IIf(IsEmpty(.Range("B65536")), .Range("B65536").End(xlUp).Row, 65536)
Set Found = .Range(Cells(ActiveCell.Row + 1, 2), Cells(LoLetzte, 2)).Find(sSearch, Range("b" & LoLetzte), , xlPart, , xlNext)
If Found Is Nothing Then Exit Sub 'falls nicht gefunden wird
Found.Select
End With
End Sub


Warum geht Change nicht auch ohne "Application.SendKeys "{F2}"" ?
Läßt sich der Suchvorgang nicht fortsetzen, ohne vorher in den Doppelklickmodus zu kommen?
Wiedermal Danke für eure Hilfe.
Gruß
Karsten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Change-Frage
04.04.2009 13:34:07
Tino
Hallo,
ich verstehe den ganzen Sinn deines Makros nicht.
Wenn ich verstehen sollte was Du vor hast, müsste es auch so gehen?!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sSearch As String
Dim LoLetzte As Long
Dim Found As Range
If InStr(Cells(1, 2), "T E R M I N E") > 0 Then
sSearch = Range("B1")
With Worksheets("Lehrbericht")
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Rows.Count, .Cells(.Rows.Count, 2).Row) _
Set Found = .Range(.Cells(ActiveCell.Row + 1, 2), .Cells(LoLetzte, 2)). _
Find(sSearch, .Range("b" & LoLetzte), , xlPart, , xlNext)
If Not Found Is Nothing Then Application.Goto Found
End With
End If
End Sub


Gruß Tino

Anzeige
AW: Change-Frage
04.04.2009 22:46:47
Karsten
Hallo Tino,
wenn ich :
If InStr(Cells(1, 2), "T E R M I N E") > 0 Then
ändere nach:
If Not InStr(Cells(1, 2), "T E R M I N E") > 0 Then
dann wird der Suchvorgang erst ausgelöst.
Um mit Enterdruck weiter suchen zu können, muß ich aber erst F2 drücken. Oder ich setze eben hinten dran noch...
Application.SendKeys "{F2}"
... was ich aber gern vermeiden würde.
Oder - mein frommer Wunsch: Wenn nicht mehr gefunden wird, was in (Cells(1, 2) steht, sollte der Makro beendet werden, so dass ich mit Enter eine Zelle nach unten springe und ich mich aber nicht im F2 - Modus befinde.
Ich weiß, ganz schön dolle, was ich da will.
Gruß
Karsten
Anzeige
AW: Change-Frage
05.04.2009 08:52:18
Tino
Hallo,
Versuche es mal hiermit, damit kannst Du mit der Taste F12 Suchen.
kommt als Code in Tabelle Lehrbericht
Option Explicit 
 
Private Sub Worksheet_Activate() 
 If ActiveCell.Column = 2 Then 
  Application.OnKey "{F12}", "SucheUeberF12" 
 End If 
End Sub 
 
Private Sub Worksheet_Deactivate() 
 Application.OnKey "{F12}" 
End Sub 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
 If Target.Column = 2 Then 
  Application.OnKey "{F12}", "SucheUeberF12" 
 Else 
  Application.OnKey "{F12}" 
 End If 
End Sub 

Modul Modul1

Option Explicit 
 
Sub SucheUeberF12() 
Static Found As Range 
 Application.EnableEvents = False 
    With Worksheets("Lehrbericht") 
      
     If Found Is Nothing Then 
        Set Found = .Columns(2).Find(Range("B1"), Range("B1"), xlValues, 2, 1, 1, False) 
     Else 
        Set Found = .Columns(2).Find(Range("B1"), Found, xlValues, 2, 1, 1, False) 
     End If 
      
     If Not Found Is Nothing Then Application.Goto Found 
    End With 
 Application.EnableEvents = True 
End Sub 


Gruß Tino

Anzeige
AW: Change-Frage
05.04.2009 12:43:48
Karsten
Hallo Tino,
besten Dank, wirklich Spitze.
Ich hätte trotzdem noch eine Bitte. Könnte, wenn ich den letzten Fund mit F12 bestätigt habe, oben in B1 automatisch "T E R M I N E" reingeschrieben werden. Ich gehe davon aus, dass ein 2. Mal der selbe Suchlauf nicht mehr gemacht wird.
Danke.
Gruß
Karsten
AW: Change-Frage
05.04.2009 13:32:44
Tino
Hallo,
teste mal und ersetze den Code im Modul durch diesen.
Option Explicit
 
Sub SucheUeberF12()
Static Found As Range
 Application.EnableEvents = False
    
    With Worksheets("Lehrbericht")
      
     If Found Is Nothing Then
        Set Found = .Columns(2).Find(Range("B1"), Range("B1"), xlValues, 2, 1, 1, False)
     Else
        Set Found = .Columns(2).Find(Range("B1"), Found, xlValues, 2, 1, 1, False)
     End If
        
        If Not Found Is Nothing Then
            If Found.Row = 1 Then
             .Range("B1") = "T E R M I N E"
              Set Found = Nothing
            End If
        End If
     
     If Not Found Is Nothing Then Application.Goto Found
    End With
 
 Application.EnableEvents = True
End Sub


Gruß Tino

Anzeige
AW: Change-Frage
05.04.2009 19:13:51
Karsten
Hallo Tino,
Danke, es funktioniert.
Gruß
Karsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige