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

Kommentar aus Zelle in Textbox

Kommentar aus Zelle in Textbox
13.06.2014 21:08:13
Werner

Bräuchte mal wieder Hilfe von den Profis,
mit einem Code schreibe ich Daten aus einer Userform mit diversen Textboxen in die Tabelle. Den Code habe ich jetzt dahingehend erweitert, dass ich noch einen Text in einer Textbox erfassen und diesen dann als Kommentar in die Zelle schreibe. Der Kommentar ist immer in einer Zelle in der Spalte D. Das funktioniert auch. Hier der Code-Teil mit dem ich den Kommentar in die Zelle schreibe:
With ActiveCell
.ClearComments
If Dateneingabe.Bemerkungen <> "" Then
.AddComment Dateneingabe.Bemerkungen.Text
.Comment.Shape.DrawingObject.AutoSize = False
.Comment.Shape.Width = 700
.Comment.Shape.Height = 400
End If
End With
Dateneingabe.Bemerkungen = ""
Im weiteren Verlauf lese ich dann die Daten aus der Tabelle über ein Array in eine mehrspaltige Listbox ein.

Private Sub UserForm_Activate()
Application.ScreenUpdating = False
Dim sText As String
Dim i As Long, n As Long, r As Long
Dim ArValues()
Dim arrList()
Worksheets("Jahrestabelle").Activate
TextBox1.SetFocus
Personalien.Clear
Änderung.Ändern.ForeColor = RGB(0, 100, 0)
Änderung.Löschen.ForeColor = RGB(255, 0, 0)
With Worksheets("Jahrestabelle")
i = .Range("D1000").End(xlUp).Row
If i > 4 Then
sText = .Cells(i, 4).Value & .Cells(i, 5).Value & .Cells(i, 6).Value
'Array groß genug Dimensionieren
ReDim Preserve ArValues(1 To 12, 1 To i)
For i = 5 To i
If Trim(CStr(.Cells(i, 4).Value)) <> "" Then
n = n + 1 'Hilfszähler um Array zu füllen
ArValues(1, n) = .Cells(i, 4).Value
ArValues(2, n) = .Cells(i, 5).Value
ArValues(3, n) = .Cells(i, 6)
ArValues(4, n) = .Cells(i, 7).Value
ArValues(5, n) = .Cells(i, 8)
ArValues(6, n) = .Cells(i, 9)
ArValues(7, n) = .Cells(i, 10)
ArValues(8, n) = .Cells(i, 11)
ArValues(9, n) = .Cells(i, 12)
ArValues(10, n) = .Cells(i, 13)
ArValues(11, n) = i
ArValues(12, n) = .Cells(i, 4).NoteText
End If
Next i
'nicht benötigte Spalten entfernen
ReDim Preserve ArValues(1 To 12, 1 To n)
ReDim arrList(1 To n, 1 To 12)
'Array drehen und in Listbox schreiben
For r = 1 To 12
For i = 1 To n
arrList(i, r) = ArValues(r, i)
Next
Next
Me.Personalien.List = arrList
End If
End With
Worksheets("Dateneingabe").Activate
Application.ScreenUpdating = True
End Sub
An den fett markierten Stellen habe ich das Array um ein Feld erweitert (vorher 11, jetzt 12) und lese die Daten aus dem Kommentar ebenfalls in das Array und die Listbox ein. Die Listbox habe ich natürlich auch um eine Spalte erweitert. Auch das scheint zu funktionieren.
Anschließend übergebe ich den ausgewählten Listboxeintrag an eine andere Userform mit diversen Textboxen. Hintergrund ist, dass ich dort die Daten editieren und wieder in die Tabelle zurückschreiben kann.
Private Sub UserForm_Activate()
Application.ScreenUpdating = False
Zeile.Visible = False
Ändern.ForeColor = RGB(0, 100, 0)
Veränderungen.Familienname = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 0)
Veränderungen.Vorname = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 1)
Veränderungen.GebDatum = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 2)
Veränderungen.Geburtsort = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 3)
Veränderungen.Datum = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 4)
Veränderungen.Stö = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 5)
Veränderungen.Stra = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 6)
Veränderungen.Verw = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 7)
Veränderungen.OE = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 8)
Veränderungen.Eigene = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 9)
Veränderungen.Zeile = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 10)
Veränderungen.Kommentar = Änderung.Personalien.List(Änderung.Personalien.ListIndex, 11)
With Familienname
.SelStart = 0
.SelLength = Len(.Text)
End With
Familienname.SetFocus
Application.ScreenUpdating = True
End Sub
Das geht auch, aber leider nur bedingt. Ich habe hier das Problem, dass der Text aus dem Kommentar der Zelle zwar in die Textbox übertragen wird. Handelt es sich um einen längeren Text dann wird er nicht komplett in der Textbox dargestellt sondern irgendwann einfach abgeschnitten, der Rest fehlt.
Ich habe jetzt keine Ahnung, ob es bereits beim Einlesen ins Array, bei der Übergabe des Arrays an die Listbox oder bei der Übergabe aus der Listbox in die Textbox zu diesem Problem kommt.
Vielleicht kann mir ja jemand weiter helfen.
Danke Werner

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kommentar aus Zelle in Textbox
14.06.2014 09:05:18
Beverly
Hi Werner,
ich schätze, es liegt an der Verwendung von .NoteText, da ist m.W. die Zeichenanzahl auf 255 begrenzt. Versuche es mal mit .Comment.Text


AW: Kommentar aus Zelle in Textbox
14.06.2014 16:18:08
Werner
Hallo Karin,
danke für die Antwort aber das funktioniert leider nicht. Da kommt die Fehlermeldung Objekt unterstützt diese Eigenschaft nicht.
Werner

AW: Kommentar aus Zelle in Textbox
14.06.2014 21:08:49
Beverly
Hi Werner,
also bei mir funktioniert dieser Code
Sub KommentarWiedergeben()
MsgBox ActiveCell.Comment.Text
End Sub
aber selbstverständlich nur, wenn die Zelle auch tatsächlich einen Kommetnar enthält.


Anzeige
AW: Kommentar aus Zelle in Textbox
15.06.2014 11:06:34
Werner
Hallo Karin,
seltsam!! Ich habe es gerade noch mal ausprobiert und es geht mit ".Comment.Text". Ich bin mir aber ziemlich sicher, dass ich es genau so auch schon hatte und dabei eine Fehlermeldung auftrat -aber egal, jetzt geht es ja-.
Ich habe das Ganze jetzt nur noch mit einem on error resume next ergänzt um zu verhindern, dass er in eine Fehlermeldung läuft wenn die Zelle keinen Kommentar hat.
Danke für die Unterstützung.
Gruß Werner

AW: Kommentar aus Zelle in Textbox
15.06.2014 11:16:30
Beverly
Hi Werner,
das geht auch ohne On Error:
Sub KommentarWiedergeben()
If Not ActiveCell.Comment Is Nothing Then
MsgBox ActiveCell.Comment.Text
Else
MsgBox "Zelle hat keinen Kommentar"
End If
End Sub


Anzeige
AW: Kommentar aus Zelle in Textbox
15.06.2014 12:49:20
Werner
Hallo Karin,
sicher die elegantere Lösung. Werde sie einbauen.
Danke Werner

340 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige