Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
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

Kommentare Spalte für Spalte auslesen lassen

Kommentare Spalte für Spalte auslesen lassen
28.06.2016 21:31:11
René
Hallo Excelfreunde,
ich habe in einem Sheet folgende Prozedur, welche mir alle Kommentare von Zellen ausliest und als Liste unter einem Dienstplan ausgibt. Dabei geht Excel so vor, das er Zeile für Zeile prüft und den Kommentar ausgibt.
Kann man dies ändern, so dass immer Spalte für Spalte geprüft wird, so dass eine spätere Sortierung entfallen kann?
Das der Code nicht zu lang wird, habe ich nur das erste Quartal stehen lassen.
Sub KommentareAuslesen()
Dim note As Comment
Dim tbl As Worksheet
Dim intZ As Integer
Dim letzteZeile As Integer
Application.EnableEvents = False
'suche den Eintrag "Mitarbeiteranzahl" und gehe zwei Zeilen nach oben;
intZ = Range("B:F").Find("Mitarbeiteranzahl").Row + 3
Range(Cells(intZ, 2), Cells(300, 379)).ClearContents
Set tbl = ActiveSheet
For Each note In tbl.Comments
Select Case Cells(4, 2).Value
Case Is = "Januar"
If note.Parent.Column >= 8 And note.Parent.Column = 39 And note.Parent.Column = 70 And note.Parent.Column 
Grüße René

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Optimierung ohne CASE
30.06.2016 15:06:51
Michael
Hi René,
a) der Code ist suboptimal: CASE ist relativ langsam, und in jedem Schleifendurchlauf den Wert ein und derselben Zelle Cells(4, 2) mit CASE auszuwerten, ist völlig unnötig - der ändert sich während der Schleife ja nicht.
b) ich denke, die Reihenfolge, mit der For each die Kommentare durchläuft, läßt sich nicht beeinflussen.
Optimiert sieht das Makro z.B. so aus:
Sub KommentareAuslesen()
Dim note As Comment
Dim tbl As Worksheet, DGA As Worksheet
Dim intZ As Long, letzteZeile As Long
Dim monatNr As Variant
Dim monate
Const liSpC = 8, reSpC = 38, liSp1C = 8, reSp1C = 29
' für      >=,        = liSp And nPC 
Datei mit Makro in Modul1: https://www.herber.de/bbs/user/106649.xlsm
Feinheiten lassen sich eigentlich nur mit Beispieldatei optimieren.
Schöne Grüße,
Michael

Anzeige
AW: Optimierung ohne CASE
30.06.2016 22:04:13
René
Hallo Michael,
danke das du dich mit meinem Problem auseinandergesetzt hast. Deinen Code habe ich getestet. Er funktioniert sehr gut, wobei ich jedoch keinen großen Geschwindigkeitsunterschied erkenne. Was mir jedoch sehr gut gefällt ist, dass der Code mit viel weniger Zeilen auskommt, so dass er auch besser gepflegt werden kann.
Das man Excel nicht sagen kann -arbeite die Zellen Spalte für Spalte, statt Zeile für Zeile ab-, kann ich mir irgendwie nicht vorstellen. Jedoch bestätigen vorangegangene Recherchen deine Aussage. Ich habe nirgends etwas finden können, so dass du diese "bittere Wahrheit" einfach nur bestätigst.
Falls es doch eine Lösung gibt, bin ich weiter für Zuarbeiten dankbar.
Grüße
René

Anzeige
AW: Optimierung ohne CASE
01.07.2016 18:19:02
Michael
Hi,
kommt natürlich darauf an, wie viele Kommentare Du hast...
Aber wenn Geschwindigkeit keine Rolle spielt, probier das mal:
https://www.herber.de/bbs/user/106692.xlsm
Jetzt wird sortiert!
Ich mache es mir einfach und schreibe ein paar Daten in die Tabelle und lasse sie dort sortieren; man könnte das auch in reinem VBA machen, da kannste mal nach Excel vba bubblesort recherchieren...
Viel Spaß,
Michael

AW: Optimierung ohne CASE
02.07.2016 16:09:59
René
Hallo Michael,
so wie ich das in deiner Datei sehe, ist es genau das was ich suche. Ich werde es morgen mal bei mir einbauen, da ich nicht eher dazu komme und berichte nach. Vorab schon mal vielen Dank.
Dieses bubblesort schaue ich mir ebenfalls mal an.
Grüße
René

Anzeige
ok, viel Erfolg & Gruß owT
02.07.2016 17:51:01
Michael

AW: ok, viel Erfolg & Gruß owT
03.07.2016 16:36:20
René
Hallo Michael,
ich habe deinen Code heute noch etwas getestet und ihn bei mir eingebaut. Dabei habe ich jedoch immer den Laufzeitfehler 9 erhalten ("Index außerhalb des gültigen Bereiches"). In deiner Tabelle funktionierte soweit alles.
Danach habe ich bei dir weitere Kommentare ergänzt (blau markierte). Und siehe da, auch in deiner Version entsteht der Fehler. Die Ursache kenne ich nicht. Ich denke das es etwas mit dem Array zu tun haben könnte, aber dafür fehlt mir das nötige Knowhow.
Kannst du den Fehler nachvollziehen?
https://www.herber.de/bbs/user/106708.xlsm
Grüße
René

Anzeige
Fehler gefunden
03.07.2016 18:40:06
Michael
Hi René,
diese "abstrakte" Programmierung rächt sich manchmal...
Dabei ist der Fehler ganz simpel. Er entstand in der Zeile
tblA = tbl.Range("A1", tbl.Cells(untZ + 2, ZundS(k, 3) + 2))
Die ZEILENangabe steht NACH der Sortierung nicht mehr im untersten Feld (k) des Arrays; deshalb habe ich den Wert von vor dem Sortieren in die Variable untZ (wie unterste Zeile) zwischengespeichert, dann paßt's:
Sub KommentareAuslesenSort()
Dim note As Comment
Dim tbl As Worksheet, DGA As Worksheet, SortR As Range
Dim intZ&, letzteZeile&, k&, untZ& ' & = as long
Dim monatNr As Variant
Dim monate, ZundS(), Werte(), tblA
Const liSpC = 8, reSpC = 38, liSp1C = 8, reSp1C = 29
' für      >=,        = liSp And ZundS(k, 3) 
Schöne Grüße,
Michael

Anzeige
Jetzt passt es
04.07.2016 17:34:28
René
Hallo Michael,
jetzt passt es und funktioniert nach meinen Bedürfnissen. Ich danke dir nochmal vielmals.
Grüße
René

das freut mich, gern geschehen,
05.07.2016 00:24:16
Michael
René,
schöne Grüße zurück,
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige