WinFuture-Forum.de: Excel Macro, Bitte um Hilfe - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Office 2010
Seite 1 von 1

Excel Macro, Bitte um Hilfe

#1 Mitglied ist offline   laser2011 

  • Gruppe: aktive Mitglieder
  • Beiträge: 83
  • Beigetreten: 30. Mai 13
  • Reputation: 0

geschrieben 30. Mai 2013 - 14:22

Vieleicht hat ja jemand ahnung.

und zwar nutze ich folgende Makro:


Zitat

"Private Sub Worksheet_Change(ByVal Target As Range)
Dim loZeile As Long
If Target.Address = "$C$3" Then
Application.ScreenUpdating = False
ActiveSheet.UsedRange.Rows.Hidden = False
If Target <> "" Then
For loZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 4 Step -1
Cells(loZeile, 1).EntireRow.Hidden = Application.CountIf(Rows(loZeile), Target) = 0
Next loZeile
End If
Application.ScreenUpdating = True
End If
End Sub"



das geht auch soweit.

allerdings muß ich in das suchfeld genau das eingeben was auch in der Tabelle steht.

Ich möchte aber auch gerne das alle ähnlichen angezeigt werden.

zb. Gesucht wird nach "carly"

dann soll auch "Carly Rae Jepsen" angezeigt werden.

was muß ich dafür ändern?

Vielen Dank

Dieser Beitrag wurde von laser2011 bearbeitet: 30. Mai 2013 - 14:23

0

Anzeige

#2 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 416

geschrieben 30. Mai 2013 - 14:26

Nur mal zum verständnis: C3 ist eine Art Suchfeld und sobald da was eingegeben wird, soll in einer Liste gesucht werden was dem eintrag in C3 entspricht?
«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#3 Mitglied ist offline   laser2011 

  • Gruppe: aktive Mitglieder
  • Beiträge: 83
  • Beigetreten: 30. Mai 13
  • Reputation: 0

geschrieben 30. Mai 2013 - 14:32

Hallo,

Ja genau.

das geht auch.
allerdings nur wenn ich es genau so eingeben wie es auch in der Liste geschrieben ist

Ich kenne diese beiden befehle:
aber bekomme sie nicht unter

Zitat

Der Titel muss auf das Zeichen genau übereinstimmen, sonst wird "Nein" ausgegeben.
Für Teiltreffer müsstest LookAt:=xlPart nutzen

0

#4 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 416

geschrieben 30. Mai 2013 - 14:36

Ich werd grad aus dieser Anweisung nicht schlau
Cells(loZeile, 1).EntireRow.Hidden = Application.CountIf(Rows(loZeile), Target) = 0


Aber wenn Lookat:=xlpart irgendwo reinmuss dann hinter target
Woanders ergibt das keinen Sinn.

Edit: grade mal getestet, die zählenwenn funktion unterstützt garkeine unscharfen Treffer :unsure:

Dieser Beitrag wurde von Sturmovik bearbeitet: 30. Mai 2013 - 14:38

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#5 Mitglied ist offline   laser2011 

  • Gruppe: aktive Mitglieder
  • Beiträge: 83
  • Beigetreten: 30. Mai 13
  • Reputation: 0

geschrieben 30. Mai 2013 - 14:41

Ich glaube "Lookat:=xlpart" ist für diese Anweisung nicht geeignet..


also muß ich es komplett neu machen...

oh mann ich kenne mich mit den Makros nicht wirklich gut aus.

hast du ein Vorschlag..
0

#6 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 416

geschrieben 30. Mai 2013 - 14:53

Ja habe ich. Schön ist anders, aber bei meinem Musikverzeichnis funktionierts:

If InStr(1, StrConv(Cells(loZeile, 1), vbLowerCase), StrConv(Target, vbLowerCase)) = 0 Then Cells(loZeile, 1).EntireRow.Hidden = True

Dieser Beitrag wurde von Sturmovik bearbeitet: 30. Mai 2013 - 14:54

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#7 Mitglied ist offline   laser2011 

  • Gruppe: aktive Mitglieder
  • Beiträge: 83
  • Beigetreten: 30. Mai 13
  • Reputation: 0

geschrieben 30. Mai 2013 - 14:59

mhh,
das geht nicht..

hier mal meine datei
(habe ich weg gemacht)

das geht eigentlich sehr gut.

was halt noch fehlt ist das suchen nach "unscharfen Treffer "

Dieser Beitrag wurde von laser2011 bearbeitet: 30. Mai 2013 - 15:31

0

#8 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 416

geschrieben 30. Mai 2013 - 15:04

Witzbold, ohne Inhalt kann ich das schlecht testen. ;)

Aber ich glaube ich weiß wo der Fehler ist.
In welchen Spalten soll von c3 aus gesucht werden? nur in Spalte c?
Wenn das so ist, dann
If InStr(1, StrConv(Cells(loZeile, 3), vbLowerCase), StrConv(Target, vbLowerCase)) = 0 Then Cells(loZeile, 1).EntireRow.Hidden = True


Wenn mehrere Spalten durchsucht werden sollen, dann muss ich mir noch was anderes überlegen. Da wäre auch die find-Methode besser geeignet.

EDIT: Code falsch geändert, jetzt solltes passen

Dieser Beitrag wurde von Sturmovik bearbeitet: 30. Mai 2013 - 15:06

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#9 Mitglied ist offline   laser2011 

  • Gruppe: aktive Mitglieder
  • Beiträge: 83
  • Beigetreten: 30. Mai 13
  • Reputation: 0

geschrieben 30. Mai 2013 - 15:10

Nein es soll in allen spalten gesucht werden.

und dann auch nur die angezeigt werden die gefunden wurden.

habe ja niccht alles raus gelöscht.

die ersten 2 Spalten sind noch mit inhalt.


mhh dann bleibe ich bei meinem.
wenn ich ein Sternchen dahinter mache geht es.

wollte halt nur darauf verzichten...
0

#10 Mitglied ist offline   Sturmovik 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.725
  • Beigetreten: 10. Januar 08
  • Reputation: 416

geschrieben 30. Mai 2013 - 15:12

Ok, dann wirds wohl eher was mit range.find
Kleinen Moment bitte :wink:



Bitte mal ausprobieren:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim loZeile As Long, found As Range
    If Target.Address = "$C$3" Then
        Application.ScreenUpdating = False
        ActiveSheet.UsedRange.Rows.Hidden = False
        If Target <> "" Then
            For loZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 4 Step -1
                
                Set found = Nothing
                Set found = Cells(loZeile, 1).EntireRow.Find(what:=Target, lookat:=xlPart)
                If found Is Nothing Then Cells(loZeile, 1).EntireRow.Hidden = True
            Next loZeile
        End If
        Application.ScreenUpdating = True
    End If
End Sub


Dieser Beitrag wurde von Sturmovik bearbeitet: 30. Mai 2013 - 15:18

«Geschichte wiederholt sich nicht, aber sie reimt sich» (Mark Twain)

Unix won't hold your hand. You wanna shoot your foot, Unix reliably delivers the shot.

True Cloudstorage
0

#11 Mitglied ist offline   laser2011 

  • Gruppe: aktive Mitglieder
  • Beiträge: 83
  • Beigetreten: 30. Mai 13
  • Reputation: 0

geschrieben 30. Mai 2013 - 15:21

Jey.

Super.

Vielen Vielen Dank

Das ist genau das..
warum bin ich nicht schon vorher hierher gekommen..
seit 4 Stunden versuche ich zu basteln :-)

Danke nochmal
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0