als VBA-Neuling arbeite ich gerade an meinem ersten "Programm" und bräuchte ein bisschen Unterstützung.
Ziel ist es zu lange Textinhalte in einem Kommentar darzustellen, damit ich die Formatierung meiner Tabelle nicht ändern muss.
Hierfür habe ich bereits aus einem altem Thread ein passenden Code herausgesucht:
--------------
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const WORD_WRAP = 20
Dim objRange As Range, objCell As Range
Dim strText As String
Dim lngIndex As Long, lngCount As Long
Set objRange = Intersect(Target, Columns("Q:Y"))
If Not objRange Is Nothing Then
For Each objCell In objRange
If IsEmpty(objCell) Then
Call DeleteComment(objCell)
Else
If Len(objCell.Value) > 20 Then
strText = objCell.Text
For lngIndex = 1 To Len(strText)
lngCount = lngCount + 1
If lngCount >= WORD_WRAP And Mid$( _
strText, lngIndex, 1) = " " Then
Mid$(strText, lngIndex, 1) = vbLf
lngCount = 0
End If
Next
With objCell
If .Comment Is Nothing Then .AddComment
.Comment.Shape.DrawingObject.AutoSize = True
.Comment.Text Text:=strText
End With
Else
Call DeleteComment(objCell)
End If
End If
Next
End If
End Sub
Private Sub DeleteComment( _
ByRef probjCell As Range)
If Not probjCell.Comment Is Nothing Then probjCell.Comment.Delete
End Sub
---------------
Allerdings wird hier der Textinhalt innerhalb von einer Zeile als Kommentar angezeigt. Wie muss ich den Code anpassen, damit der Kommentar beispielsweise nach 60 Zeichen einen Zeilenumbruch macht ?
Leider verstehe ich den Teil ab "Else" nicht so richtig, vielleicht hat hier jemand auch ein paar erklärende Worte für mich parat ?
Gruß,
Rafe