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

Leerzeichen löschen per Makro

Frage Microsoft Microsoft Office

Mitglied: Yosimo

Yosimo (Level 1) - Jetzt verbinden

19.05.2011 um 12:54 Uhr, 8639 Aufrufe, 8 Kommentare

Moin,

ich habe ein Makro geschrieben, das mir z.B. in Adressdaten unnötige Leerzeichen in den Zellen entfernt, die am Anfang oder am Ende des Zelleneintrags stehen:

Sub Leerzeichen_entfernen()
For Each Zelle In Selection
Zelle.Value = Trim(Zelle.Value)
Next
End Sub

Das Makro funktioniert gut, ABER ich muss vor der Ausführung die Zellen erst markieren.
Wie muss ich das Makro ändern, damit es ohne vorheriges Markieren auf das geöffnete Tabellenblatt wirkt?

Arbeite mit Excel 2007 unter Win7

Mit freundlichen Grüßen
Yosimo
Mitglied: vossi31
19.05.2011 um 13:01 Uhr
"Cells.Selec" vor die For Each Schleife

Henning
Bitte warten ..
Mitglied: bastla
19.05.2011 um 13:02 Uhr
Hallo Yosimo!

Du könntest zwar "Selection" durch "Cells" ersetzen - aber das willst Du (besonders bei Excel2007) nicht wirklich (BTW: Ein VBA-Programm kannst Du mit <Strg>+<Pause> abbrechen) ...

... daher eher eine der Zellen vorweg markieren und zB "ActiveCell.CurrentRegion" verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: Yosimo
19.05.2011 um 13:28 Uhr
Vielen Dank für die Tipps.

" ... aber das willst Du (besonders bei Excel2007) nicht wirklich... "
in der Tat: das dauert ja ewig. Danke für den Hinweis zum abbrechen . Hennings Vorschlag läuft wohl auf das selbe hinaus.

Ich denke, ich nehme die "ActiveCell.CurrentRegion" Version. Was genau beinhaltet denn die CurrentRegion?

Gruß
Yosimo
Bitte warten ..
Mitglied: Snowman25
19.05.2011 um 15:53 Uhr
Hallo Yosimo,
Zitat von Yosimo:
Ich denke, ich nehme die "ActiveCell.CurrentRegion" Version. Was genau beinhaltet denn die CurrentRegion?
Die CurrentRegion der zusammenhängende Bereich an Zellen, in dem du dirch gerade befindest.
Beispiel:
\ A B C D E
1 Daten1 Daten2 Daten3
2 abc 152 test
3 dies repräsentiert Daten
4
5 hier auch noch welche

In diesem Beispiel wäre deine ActiveRegion B1:D3 wenn sich dein Curser innerhalb dessen befindet.

Gruß
Snow


Gruß
Snow
Bitte warten ..
Mitglied: Yosimo
19.05.2011 um 17:02 Uhr
Aha, hab's kapiert, Danke!

Da schießt mir auch gleich die Frage in' Kopf, ob man mit einem Makro die Anzahl der CurrentRegions auslesen kann....

Gruß
Yosimo
Bitte warten ..
Mitglied: Biber
19.05.2011 um 18:53 Uhr
Moin Yosimo,

Zitat von Yosimo:
Aha, hab's kapiert, Danke!

Da schießt mir auch gleich die Frage in' Kopf, ob man mit einem Makro die Anzahl der CurrentRegions auslesen kann....

Die Beantwortung dieser Frage traue sogar ich mir zu, obwohl VBA-Makros nun nicht gerade mein Hobby sind.

Die Anzahl der CurrentRegion ist konstant und unveränderlich immer gleich eins, wenn denn überhaupt eine existiert.

Von daher fände ich das Schreiben eines Makros zum Durchzählen der Anzahl eigentlich ein weing übertrieben.

Okay, es übt....

Grüße
Biber
Bitte warten ..
Mitglied: Yosimo
20.05.2011 um 15:48 Uhr
Hallo Biber,

ja klar, die CurrentRegion kann immer nur eine sein, nämlich die, in der sich die aktive Zelle befindet.

Was ich meinte ist die Anzahl aller möglichen zusammenhängenden befüllten Zellen, die eine CurrentRegion sein könnten, wenn sich die Aktive Zelle darin befinden würde.

Eine CurrentRegion scheint ja dermaßen definiert zu sein, dass nebeneinanderliegende befüllte Zellen durch umliegende Leerzellen und/oder Tabellenblattrand begrenzt sind. Derartige Inseln befüllter Zellen könnten ja mehrere in einem Tabellenblatt enthalten sein. Die Anzahl dieser möglichen Inseln per Makro auszugeben war der Sinn meiner Frage. (Als Beispiel fällt mir eine Adressdatei ein, die z.B. nach jedem PLZ-Bereich eine leere Zeile enthält, oder zur optischen Trennung leere Spalten ....)

Ist aber nicht so wichtig, denn da habe ich den in Frage kommenden Tabellenbereich doch schneller per Hand ausgewählt.

Grüßle
Yosimo
Bitte warten ..
Mitglied: Snowman25
23.05.2011 um 10:23 Uhr
Hallo Yosimo,

Du könntest z.B. alle beschriebenen zellen anschauen und die jeweligen CurrentRegions vergleichen. (einfach und langsam)
Du könntest aber auch die erste beschriebene Zelle nehmen, und deren CurrentRegion oben so einsetzen, dass vor jedem Check geprüft wird, ob die aktuelle Zelle innerhalb der bereits gefundenen CurrentRegions ist. (komplexer, aber schneller).
Allerdings weiss ich nicht, wie sich eine Tabelle verhält die so aussieht:
\ A B C D E
1 abc def ghi
2 def ghi jkl
3 ghi jkl mno pqr stu
4 pqr stu vw
5 stu vw x
6 vw x yz

Wenn jetzt C3 (mno) markiert wäre. wäre die CurrentRegion dann A1:E6 oder was anderes?
und wenn B2 markiert wäre (ghi), ist die CurrentRegion dann A1:C3 oder A1: E6?
Und wie sieht das aus, wenn D3:E3 leer wäre, die Verbindung also nur nach unten besteht?
Da müsste man also noch etwas recherchieren.

Gruß
Snow
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Exchange Server
Exchange 2010 Akzeptierte Domäne löschen (4)

Frage von Rob1982 zum Thema Exchange Server ...

Exchange Server
gelöst SBS2011 - im Exchange mobile Geräte löschen (4)

Frage von MiSt zum Thema Exchange Server ...

Exchange Server
Inhalt von Postfächern in Exchange löschen (9)

Frage von m.reeger zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...