Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Löschen der Zeile, wenn Zelle einen bestimmten Wert beinhaltet

Frage Entwicklung VB for Applications

Mitglied: caffebone11

caffebone11 (Level 1) - Jetzt verbinden

13.12.2011 um 16:46 Uhr, 13677 Aufrufe, 8 Kommentare

Löschen der Zeile, wenn Zelle einen bestimmten Wert beinhaltet

Hallo,

ich habe eine Software-Liste als eine Excel-Datei:
(A-Softwarebezeichnung, B-Hersteller, C-Kommentar usw.)
...
eDrawings 2008 SolidWorks
GNU Ghostscript 7.05
...
Hotfix für Windows XP (KB979306) Microsoft Corporation
Hotfix für Windows XP (KB981793) Microsoft Corporation
...
Sicherheitsupdate für Windows Internet Explorer 7 (KB972260)
Sicherheitsupdate für Windows Internet Explorer 7 (KB972295)
...
Update für Windows XP (KB2467659)
Update für Windows XP (KB2469664)
..
Nun möchte ich die komplette Zeilen, die in A mit "Hotfix" und "Sicherheitsupdate" sowie "Update" beginnen, löschen, also von "Müll-Einträgen" bereinigen.

Es Beispiel habe ich:
Alle leeren Zellen löschen:
01.
Sub DeleteEmptys()  
02.
   Dim rng As Range    
03.
   Application.ScreenUpdating = False  
04.
   For Each rng In ActiveSheet.UsedRange     
05.
      If IsEmpty(rng) Then rng.Delete xlShiftUp   
06.
   Next rng  
07.
   Application.ScreenUpdating = True  
08.
End Sub 
bzw.Löschen aller Zellen in Spalte A mit "hallo" im Text:
01.
Sub DeleteQueryCells()  
02.
   Dim var As Variant    
03.
   Do While Not IsError(var)      
04.
      var = Application.Match("hallo", Columns(1), 0) 
05.
      If Not IsError(var) Then Cells(var, 1).Delete xlShiftUp      
06.
   Loop  
07.
End Sub   
08.
 

Das ist aber nicht das ich brauche.
Für Hilfe Danke!!
Mitglied: cse
13.12.2011 um 17:08 Uhr
So schwer isses gar nicht :


Sub DeleteQueryCells()
Dim var As Variant
Do While Not IsError(var)
var = Application.Match("*hallo*", Columns(1), 0)
If Not IsError(var) Then Cells(var, 1).Delete xlShiftUp
Loop
End Sub

vielleicht findest du es ja :D
Bitte warten ..
Mitglied: bastla
13.12.2011 um 17:10 Uhr
Hallo caffeebone11 und willkommen im Forum!

Für ein Suchwort zB so:
01.
Sub DeleteQueryCells() 
02.
   Do While Not IsError(var) 
03.
      var = Application.Match("Sicherheitsupdate*", Columns(1), 0) 
04.
      If Not IsError(var) Then Rows(var).Delete 
05.
   Loop 
06.
End Sub
Um alle Begriffe durchzugehen, könntest Du das Sub mit Übergabe des Suchwortes als Parameter aufrufen ...

Grüße
bastla
Bitte warten ..
Mitglied: caffebone11
13.12.2011 um 17:29 Uhr
Das ging aber schnell. Vielen Dank!!!

Ich habe eigentlich so um 10 Begriffen, die ich gerne löschen möchte.
Mehrere var-Variablen helfen an der Stelle nicht oder?
01.
... 
02.
Do While Not IsError(var) 
03.
      var = Application.Match("Sicherheitsupdate*", Columns(1), 0)  
04.
      var1 = Application.Match("Hotfix*", Columns(1), 0)  
05.
      If Not IsError(var) Then Rows(var).Delete 
06.
      If Not IsError(var1) Then Rows(var1).Delete 
07.
Loop 
08.
...
Grüße
caffeebone11
Bitte warten ..
Mitglied: bastla
13.12.2011 um 17:36 Uhr
Hallo caffebone11!
Mehrere var-Variablen helfen an der Stelle nicht oder?
Genau deswegen gibt es Schleifen ...

... etwa (ungetestet):
01.
Sub WegDamit() 
02.
Begriffe = Array("Sicherheitsupdate*", "Hotfix*", "Update*") 
03.
 
04.
For Each Begriff In Begriffe 
05.
   Do While Not IsError(var) 
06.
      var = Application.Match(Begriff, Columns(1), 0) 
07.
      If Not IsError(var) Then Rows(var).Delete 
08.
   Loop 
09.
Next 
10.
End Sub
Den "*" müsstest Du nicht unbedingt für jeden Suchbegriff mit eingeben, wenn in allen Fällen das gesuchte Wort am Anfang der Zelle steht - dann könntest Du die Zeile 6 auch so schreiben:
var = Application.Match(Begriff & "*", Columns(1), 0)
Grüße
bastla
Bitte warten ..
Mitglied: caffebone11
14.12.2011 um 13:52 Uhr
Hallo Bastla,

erst mal vielen Dank!
Mit der Schleife funktioniert es noch nicht ganz. Gelöscht wird nur der erste Begriff....
Hättest Du eine Idee?

Grüße
caffebone11
Bitte warten ..
Mitglied: 76109
14.12.2011 um 20:46 Uhr
Bitte warten ..
Mitglied: bastla
14.12.2011 um 21:51 Uhr
Hallo caffeebone11!

Füge vor Zeile 5 noch ein:
var = 0
damit "var" einen "Nicht-Fehler-Wert" enthält und die "While"-Schleife (neuerlich) durchlaufen werden kann ...

Grüße
bastla
Bitte warten ..
Mitglied: caffebone11
15.12.2011 um 08:01 Uhr
Hallo Bastla,

jetzt läuft das Script bestens! Vielen Dank!!!!!!


Viele Grüße
cafeebone11
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...