Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Comment teilweise auslesen für Zelleneintrag
Klaus
Hallo Excelfreunde,
ich möchte aus einem Comment-Text eine Zahl auslesen und diese als Zelleninhalt verwenden.
Beispiel Commenttext: "Urspr. Stand 03.08.2011/ 10:39:22: 140".
Die Zahl "140" soll als neuer Zellenwert ausgelesen werden.
Wie mache ich dies?
Vielen Dank vorab!
Gruß Klaus
AW: Comment teilweise auslesen für Zelleneintrag
03.08.2011 11:13:37
Henrik
Hallo Klaus
probier mal:
Sub gft()
Dim comt, mu, hu
With ActiveSheet
For Each comt In .Shapes
mu = comt.DrawingObject.Caption
hu = Right(mu, 3)
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1) = hu
Next
End With
End Sub

...right(mu,3) bezieht sich auf die letzten 3 Zeichen im Kommentar.
Gruß Henrik
AW: Comment teilweise auslesen für Zelleneintrag
03.08.2011 11:55:11
Klaus
Hallo Henrik,
vielen Dank für Deine Hilfe. Klappt grundsätzlich.
Hatte allerdings vergessen darauf hingewiesen, dass die Zahl natürlich unterschiedlich lang sein kann.
Für die "3" in "hu = Right(mu, 3)" müsste also was stehen?
Gruß Klaus
Anzeige
B.unterschiedl Lg muss anders vorggg wdn! orT
03.08.2011 12:00:00
Luc:-?
Gruß Luc :-?
Warum gehst du alle Shapes durch,...
03.08.2011 11:57:18
Luc:-?
…Henrik?
Comment ist doch auch eine Range- und Comments eine Worksheet-Eigenschaft, die beide (ein) Kommentar-Objekt(e) bezeichnen.
Gruß Luc :-?
AW: Warum gehst du alle Shapes durch,...
03.08.2011 12:41:20
Henrik
Hallo Luc :-?,
meine VBA Kenntnisse sind eher bescheiden.
Ich komme zwar fast immer zum gewünschten Ergebnis, aber nicht immer auf dem schnellsten und elegantesten Weg.
Deswegen bin ich ja ab und an hier um zu helfen und zu lernen.
Gruß Henrik
AW: Comment teilweise auslesen für Zelleneintrag
03.08.2011 12:00:05
Rudi
Hallo,
so?
Sub Zahl_aus_Kommentar()
Dim cmt As Comment
For Each cmt In ActiveSheet.Comments
With cmt.Shape.DrawingObject
If InStr(.Text, ":") Then
cmt.Parent = Trim(Mid(.Text, InStrRev(.Text, ":") + 1)) * 1
End If
End With
Next
End Sub

Gruß
Rudi
Anzeige
AW: Comment teilweise auslesen für Zelleneintrag
03.08.2011 13:42:20
Klaus
Hallo Rudi,
Vielen Dank! Dein Beispiel funktioniert für die gesamte Seite. Aber es sollte nur in einem vorher ausgewählten Bereich (kann aus einer oder mehrere Zellen bestehen) funktionieren.
Mein Wunsch:
Sub Zahl_aus_Kommentar()
Dim cmt As Comment
Dim Bereich As Range
Set Bereich = Application.InputBox _
(prompt:="Zelle oder Bereich(e) (nur mit roter Schrift und Inhalt) markieren," & _
" für die die Zahl im jeweiligen Kommentar verwendet werden soll.", Type:=8)
If bereich Is Nothing Then Exit sub
Bereich.Select
For each cmt in Bereich.comments
'  For Each cmt In Bereich.Comments 'ActiveSheet.Comments
With cmt.Bereich.DrawingObject
If InStr(.Text, ":") Then
cmt.Parent = Trim(Mid(.Text, InStrRev(.Text, ":") + 1)) * 1
End If
End With
Next
End Sub
Schon "For each cmt in Bereich.comments" bringt Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht (Fehler 438).
Wo ist mein Fehler?
Gruß Klaus
Anzeige
AW: Comment teilweise auslesen für Zelleneintrag
03.08.2011 14:12:32
D.Saster
Hallo,
dann so:
Sub Zahl_aus_Kommentar_A()
Dim rngC As Range
Dim Bereich As Range
On Error Resume Next
Set Bereich = Application.InputBox _
(prompt:="Zelle oder Bereich(e) (nur mit roter Schrift und Inhalt) markieren," & _
" für die die Zahl im jeweiligen Kommentar verwendet werden soll.", Type:=8)
On Error GoTo 0
If Bereich Is Nothing Then Exit Sub
For Each rngC In Bereich
If Not rngC.Comment Is Nothing Then
With rngC.Comment
If InStr(.Text, ":") Then
rngC = Trim(Mid(.Text, InStrRev(.Text, ":") + 1)) * 1
End If
End With
End If
Next rngC
End Sub

Gruß
Rudi
Anzeige
Erledigt! Danke Euch allen!
03.08.2011 14:48:14
Klaus
Hallo Ihr Helfer,
vielen Dank für Eure Beiträge! Waren alle sehr lehrreich. Problem ist gelöst!
Gruß Klaus

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige