Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Like Operator
#1
Hallo Community!

Ich bräuchte eure Hilfe beim Like-Operator.
Ich habe bereits in meinen Büchern geschaut, finde jedoch keine Lösung bzw. meinen Fehler.

Ich möchte, dass in Spalte I jeder Eintrag gelöscht wird bzw. value "", wenn dort etwas anderes als like "nichts" steht. Dieses "nichts" ist dabei manchmal groß oder klein geschrieben.

Wo genau liegt nun mein Fehler?

Code:
Sub DeleteAllExceptNichts()

   Dim Zeile As Long
   Dim ZeileMax As Long
   Dim Text As Variant
   
       With tblExport
       
           Text = "*nichts*"
           ZeileMax = .UsedRange.Rows.Count
           
               For Zeile = 2 To ZeileMax
                               
                   If .Range("I" & Zeile).Value Like Text Then
                      .Range("I" & Zeile) = ""
                   End If
                                       
               Next Zeile
                                                                                             
       End With

End Sub
Antworten Top
#2
Hallo,

ich rate mal. Setz doch einfach ein NOT nach IF:
If not .Range("I" & Zeile).Value Like Text Then
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • joshua
Antworten Top
#3
Hallo,

hier würde Replace effektiver sein, denke ich:


Code:
Sub test()
 tblExport.UsedRange.Replace What:="nichts", Replacement:="", LookAt:=xlPart, SearchOrder _
       :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • joshua
Antworten Top
#4
Hallo,

und ergänze ein lcase(), um sowohl Groß- als auch Kleinschreibung zu erfassen.

mfg
Antworten Top
#5
(22.02.2017, 10:47)atilla schrieb: Hallo,

hier würde Replace effektiver sein, denke ich:


Code:
Sub test()
 tblExport.UsedRange.Replace What:="nichts", Replacement:="", LookAt:=xlPart, SearchOrder _
       :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

Vielen Dank,

komme leider nicht ganzu so weiter.
Wo liegt mein Fehler?

Code:
Sub test()
    Dim ZeileMax As Long
    Dim Zeile As Long
    
    With tblExport
      
        ZeileMax = .UsedRange.Rows.Count
          
        For Zeile = 2 To ZeileMax
          
        tblExport.UsedRange.Cells(Zeile, 9).Replace What:="nichts", Replacement:="", LookAt:=xlPart, SearchOrder _
           :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
          
        Next
        
    End With
    
End Sub

Diese Prozedur löscht somit alle "nichts"
Antworten Top
#6
Hallo,

da brauchst Du keine Schleife.
Der eingestellte Code ersetzt in Einem im benutzen Bereich.

Führ ihn einfach so aus, wie ich es eingestellt habe.
Gruß Atilla
Antworten Top
#7
(22.02.2017, 11:11)atilla schrieb: Hallo,

da brauchst Du keine Schleife.
Der eingestellte Code ersetzt in Einem im benutzen Bereich.

Führ ihn einfach so aus, wie ich es eingestellt habe.

Aber ich muss ja irgendwie die entsprechende Spalte anwählen, oder nicht?

Und wenn dort "nichts"(ob groß oder klein geschrieben) steht, soll nichts passieren. Andern falls soll die Zelle "" gestellt werden.
Antworten Top
#8
(22.02.2017, 10:46)Der Steuerfuzzi schrieb: Hallo,

ich rate mal. Setz doch einfach ein NOT nach IF:
If not .Range("I" & Zeile).Value Like Text Then

   
Code:
Dim Zeile As Long
    Dim ZeileMax As Long
    Dim Text As Variant
   
        With tblExport
       
            ZeileMax = .UsedRange.Rows.Count
            Text = "nichts"
                
                For Zeile = 2 To ZeileMax
                               
                    If Not .Range("I" & Zeile).Value Like Text Then
                       .Range("I" & Zeile) = ""
                    End If
                                       
                Next Zeile
                                                                                              
        End With

Das funktioniert leider auch nicht. Groß- und Kleinschreibung wird nicht beachte. Wie bekomme ich diesen lcase da rein?
Antworten Top
#9
Hallo,

aah, sorry ich habe es genau anders herum verstanden.

Muss ich noch einmal drüber schauen.
In der Zwischenzeit kannst Du Dich ja mit den anderen Vorschlägen auseinandersetzen.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • joshua
Antworten Top
#10
Hallo,

dann würde ich es so versuchen:


Code:
Sub DeleteAllExceptNichts()

  Dim Zeile As Long
  Dim ZeileMax As Long
  Dim Text As Variant
 
      With tblExport
     
          Text = "*nichts*"
          ZeileMax = .UsedRange.Rows.Count
         
              For Zeile = 2 To ZeileMax
             
                 If InStr(1, .Range("I" & Zeile).Value, Text, 1) = 0 Then
                   .Range("I" & Zeile) = ""
                 End If
                 
              Next Zeile
                                                                                           
      End With

End Sub
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste