Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
624to628
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
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kommentare auslesen / zählen

Kommentare auslesen / zählen
20.06.2005 08:52:58
Tom
Hallo,
ich möchte gerne Kommentare auslesen bzw gleiche Kommentare zählen lassen.
Siehe Bsp-Mappe https://www.herber.de/bbs/user/24011.xls
Vielleicht hat jemand ne Lösung.
Gruß und danke vorab
Tom

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kommentare auslesen / zählen
20.06.2005 09:33:58
Rolf
Hallo Tom,
vielleich hilft dir das
fG
Rolf

Sub ListComments()
Dim c As Comment, cmt As Comments
Set cmt = ActiveSheet.Comments
For Each c In cmt
Debug.Print c.Text
Next
End Sub

AW: Kommentare auslesen / zählen
20.06.2005 09:38:42
Tom
Hi Rolf,
wo werden die Kommentare ausgelesen?
Wenn ich das Makro starte passiert leider gar nichts ...
Tom
Direktansicht
20.06.2005 09:45:00
Rolf
Hallo Tom,
Debug.Print gibt Daten in der Direktansicht der Entwicklungsumgebung aus.
fG
Rolf
AW: Direktansicht
20.06.2005 09:58:24
Tom
Heute ist Monatg und ich stehe komplett auf dem Schlauch ...
Bitte noch ein weiterer Tipp - ich bin heute echt zu doof ...
Anzeige
AW: Direktansicht
20.06.2005 10:24:28
Rolf
Hey Tom,
bei "VBA gut" gilt der Montag nicht als Ausrede.
Du klickst im Projektexplorer (ALT & F11) auf "Ansicht" - "Direktansicht",
und siehst daselbst die im aktiven Blatt enthaltenen Kommentare.
Ich hatte das aus Vereinfachungsgründen (siehe oben) so gemacht, damit
du auch noch ein bisschen zu tun hast -
doch (leider) hat Micha (herzl.Grüße) dir die Arbeit inzwischen ja abgenommen.
hG
Rolf
AW: Direktansicht
20.06.2005 10:29:27
MichaV
Hi Rolf,
das war meine Frühsportaufgabe ;o) Ein bischen Arbeit hab ich ihm ja noch gelassen...
Gruss zurück- Micha
AW: Direktansicht
20.06.2005 10:35:36
Tom
Hallo Rolf und Micha,
ich habe bei Level "VBA gut" angegeben - das war in diesem Falle wohl etwas voreilig...
Doch bisher hatte ich eigentlich nie Probleme, die Abläufe zu verstehen und an meine Anforderungen anzupassen.
Ich wollte Euch beide nicht unnötig beschäftigen - sorry. Doch alleine komme ich hier wirklich nicht weiter. Die Versionen von Euch beiden (Rolf mit Auflistung im Direktfesnter und Micha in msg-Box) zeigen mir ja wie man Kommentare auslesen kann und, wie bei Micha, die Anzahl in der Msg-Box.
Ich hätte aber gerne die Ausgabe in den Zellen am Ende der Liste ...
Es wäre echt super nett, wenn Ihr mir helfen würdet. Falls nicht, muß ich leider darauf verzichten-wäre schade!
Tom
Anzeige
AW: Direktansicht
20.06.2005 10:53:34
MichaV
Hi Tom,
ich kann das nachvollziehen. Bevor ich dieses Forum kennenlernte dachte ich auch, ich wäre gut. So ist das mit der Selbsteinschätzung ;o)
Für die Erweiterung ist wichtig: ist das eine einmalige Sache (Du definierst den Range im Makro) oder willst Du das für mehrere Tabellen anwenden (das Makro muß den Range selber ekennen)? 1. Variante geht schneller, 2. Variante hört sich noch mehr nach Personalabteilung oder Lohnbüro an. ;o)
Gruss- Micha
AW: Direktansicht
20.06.2005 10:56:53
Tom
Hi Micha,
schön dass Du mir hilfst. Tja die Selbsteinschätzung - aber in diesem Forum ist das echt nicht so easy, die richtigen Angaben zu machen. Da sitzt alles: Vom Profi bis zum Erstanwender.
Bei mir geht es nur um eine Tabelle - meine Bsp-Mappe war ein Ausschnitt.
Ich denke mal, ohne mich nun zu überschätzen, die Zeilen und Spaltenanpassung sollte ich dann schon hinbekommen :-)
Gruß
Tom
Anzeige
Lösung
20.06.2005 11:16:28
Rolf
Hallo Tom,
du änderst Michas Ausgabecode so
'Ausgabe
For i = 1 To UBound(Namen)
For k = 1 To UBound(Kommentare) - 1
Cells(i + 1, k + 8) = Namen(i, k + 1)
Next
Next
Set Bereich = Nothing
fG
Rolf
PS für Micha
jetzt ist's schon fast die von Peter H. so sehr
geschätzte Gemeinschaftsarbeit
AW: Lösung
20.06.2005 11:18:41
MichaV
Hi Ihrs,
ich bin nun auch endlich fertig, bin einer von den Langsamen ;o)
Hier mein Schmalz, soll ja nicht umsonst gewesen sein:


      
'Ausagbe

Dim AusgabeBereich As Range
Dim Ausgabe()
Dim Z As Long
Dim C As Long
Set AusgabeBereich = Range("I1:K1")
Ausgabe = Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Transpose(AusgabeBereich))
Z = AusgabeBereich.Row
C = AusgabeBereich.Column
For i = 1 To UBound(Kommentare) - 1
  
'Überschriften
  Cells(Z, C + i - 1) = Application.WorksheetFunction.Substitute(Kommentare(i + 1), Chr(10), "")
  
For k = 1 To UBound(Namen)
    
'Anzahl
    Cells(Z + k, C + i - 1) = Namen(k, i + 1)
Next k, i
Set AusgabeBereich = Nothing 



Gruss- Micha
PS: jetzt teste ich erstmal Rolfs Variante ;o)
Anzeige
AW: Lösung
20.06.2005 11:21:53
Tom
Perfekt!!!!!!
Vielen Dank Euch beiden !!!!!!!!
Gruß
Tom
AW: Lösung
20.06.2005 11:33:14
MichaV
@ Rolf: ich hab ihm wieder zu einfach gemacht, nicht wahr? ;o)
@ Tom: Danke für die Rückmeldung!
Gruss- Micha
PS: Tom noch was Wichtiges:
Rolfs Variante funzt nur in Verbindung mit meinem Code, wenn Deine Tabelle wirklich 1:1 so aufgebaut ist wie die Beispieltabelle! Bsp:Die unterschiedlichen Kommentarte müssen in der Reihenfolge Schule- Arbeiten- Fahrgelegenheit zum ersten mal auftauchen. Wenn Du z.B. in C1 "keine Fahrgelegenheit{Enter}" eintipplest, dann stimmt hinten die Zuordung nicht mehr. Außerdem gibts Probleme, wenn man sich bei einem Kommentar mal vertippelt hat ("keine Fahrgelegenheit" ohne Enter am Ende reicht schon)
Mein längerer Code verhindert das, indem er einfach jeden gefundenen Kommentar in die obere Spalte reinschreibt, ggf werden dann noch einige Spalten angefügt und die Reihenfolge geändert.
Kann aber wie gesagt sein, daß die "kurze" Variante da völlig ausreicht, weil Du z.B. die Kommentare per Makro reingeschrieben hast (vertippeln unmöglich) und in Zeile 2 die Kommentare in der Reihenfolge stehen bleiben.
PPS: ahso, Ausgabe = Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Transpose(AusgabeBereich))
kannst Du löschen, war noch vom 1. Versuch. Sieht aber toll aus, was?
Anzeige
AW: Lösung
20.06.2005 11:54:39
Rolf
Hallo Micha,
du bist eben ein geduldiger Helfer (+ Perfektionist).
Die Geschichte mit dem doppelten Transpose ist wie
eine doppelte Verneinung - kann man auch direkt "ja" sagen.
Aber insgesamt gut ergänzt!
Herzliche Grüße + schönen Tag
Rolf
AW: Lösung
20.06.2005 15:09:48
Rolf
Hallo Micha,
danke für den Tipp aber wo liegt der große Nutzen?
Einzelne Elemente von
einzeiligen Arrays liest du mit E=arr(1,i) und einspaltigen mit E=arr(i,1) aus -
ohne das geringste Transpose.
HG
Rolf
Anzeige
AW: Lösung
20.06.2005 19:09:29
MichaV
Hallo
spontan fällt mir ein, daß ich arr(i,1) nicht ohne Weiteres Redimensionieren kann.
Außerdem kann es nach meinem naiven Verständnis sein, daß arr(i,1) dreimal so viel Speicher benötigt wie arr(i). Wenn ich mehrere Arrays habe muß ich nicht jedesmal überlegen, welches vertikal und welches horizontal ist. Und wenn man nicht immer ,1 oder 1, tippeln muss, macht man weniger Fehler.
Naja, im Allgemeinen finde ich es halt irgendwie doof, wenn ich ein zweidimensionales Array habe, von dem ich nur eine Dimension brauche.
Gruß- Micha
nix tippeln
20.06.2005 19:14:56
Rolf
Hallo Micha,
ok, ich gebe auf!
HG
Rolf
Anzeige
:o)
20.06.2005 19:43:49
MichaV
Hallo Rolf,
die Wahrheit ist: ich hab mir vorher noch nie Gedanke darüber gemacht ;o) , relativ selten mit 2D-Feldern gearbeitet und mich ein bischen in Transpose(Transpose( )) verliebt ;o)
Gruß- Micha
AW: Kommentare auslesen / zählen
20.06.2005 09:44:37
MichaV
Hi Tom,
den Rest solltest Du angepasst kriegen.


      
Private Sub KommentareZählen()
Dim Kommentar As Comment   'Kommentar
Dim Kommentare() As String 'Feld, das alle bisher gefundenen Kommentare enthält
Dim Namen()                'Namen(1,1)=Name1
                           'Namen(2,1)=Name2
                           'Namen(1,2)=Anzahl der gefundenen 1. Kommentare von Name1
                           'Namen(1,3)=Anzahl der gefundenen 2. Kommentare von Name1
Dim Zeile As Long          'Index des Namens
Dim KommText As String     'Text des Kommentars
Dim i As Integer           'Zählvariabele
Dim k As Integer           'Zählvariabele
Dim Bereich As Range       'Bereich, in dem die Namen stehen

Set Bereich = Range("A2:A7") 'kriegts Du angepasst
Namen = Bereich
ReDim Kommentare(1)
For Each Kommentar In ActiveSheet.Comments
  Zeile = Kommentar.Parent.Row - Bereich.Row + 1 
'Index ermitteln
  KommText = Kommentar.Text
  
For i = 1 To UBound(Namen, 2) 'Prüfen, ob Kommentar schon vorhanden?
    If Kommentare(i) = KommText Then Exit For
  
Next i
  
If i > UBound(Namen, 2) Then 'wenn Kommentar nicht gefunden
    ReDim Preserve Kommentare(UBound(Kommentare) + 1) 'Felder erweitern
    ReDim Preserve Namen(1 To UBound(Namen, 1), 1 To UBound(Kommentare))
    Kommentare(
UBound(Kommentare)) = KommText 'neuen Kommentar merken
  End If
  Namen(Zeile, i) = Namen(Zeile, i) + 1 
'Anzahl Kommentar dieses Namens um 1 erhöhen
Next Kommentar
'Ausagbe
For i = 1 To UBound(Kommentare) - 1
  
For k = 1 To UBound(Namen)
    MsgBox Namen(k, 1) & " hat " & Kommentare(i + 1) & ": " & Namen(k, i + 1)
Next k, i
Set Bereich = Nothing
End Sub 


Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige