Text aus Textbox in die Tabelle per Maus

24/11/2012 - 22:15 von Hans Alborg | Report spam
Hallo Gruppe,

ich bin mal wieder voll motiviert beim VBA-Fummeln:

<Excel 2007>
Es wird eine Textbox mit einer Stringkette gefüllt, welche mit CHR(10)
getrennt abgelegt sind. Somit ergibt sich eine x-zeilige Anordnung in der
Box (ja, Eigenschaften sind entspr. gesetzt).
Was ich möchte:

a) So 1-5 Zeilen der Textbox markieren und diese mit der Maus kopieren. Das
geht wohl leider nicht mit der normalen Rechtsklick- Technik.

Daher habe ich von
http://www.herber.de/forum/archiv/9...951357.htm
einen Codeschnipsel herausgesucht der mir markierten Text aus einer Textbox
in die Zwischenablage bringt.

b) Jetzt sollen die kopierten Zeilen in genauso viele Zeilen z.B. A8...Axx
kopiert werden, mit dem üblichen Markieren der ersten Zelle und Rechtsklick/
Einfügen.
Da klemmt's, denn ich muß den Schreibcursor in eine Zelle setzen und bekomme
alle Zeilen/Einzelstrings nur in dieselbe Zelle.

Nebenher möchte ich die Userform mit der Textbox ausblenden (.Hide) wenn ich
mit der Maus die erste Zelle markiere. Das hoffe ich mit "Modeless" zu
erreichen. Daher kommt das in meinem Code vor, den ich aus o.g. Link
extrahiert habe:
' - In die Userform -
Option Explicit
Private Sub Message01_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Dim TestDaten As DataObject
Set TestDaten = New DataObject
If Button = 2 Then
F_Meldung.Show vbModeless
If Message01.SelLength = 0 Then
MsgBox "Nix gewàhlt", vbInformation
Exit Sub
End If
If Message01.SelLength > 0 Then
TestDaten.SetText Message01.SelText
TestDaten.PutInClipboard
F_Meldung.Caption = "Daten wurden kopiert"
F_Meldung.BackColor = &HFFFF&
End If
End If
End Sub
' -- Im Modul --
Public TestDaten As DataObject
' --
Zum Zeichen daß Copy erledigt ist àndere ich Überschrift und Farbe der
Userform.

-Übrigens, weil ich das so im Netz noch nicht gefunden habe:
Wie macht man eine mehrspaltige Textbox?
Antwort: mehrere Textb. nebeneinander setzen! Gut plaziert sieht man nur
noch einen dünnen Trennstrich.
Ist wohl zu einfach für alte Hasen, aber làßt sich für mich Anfànger gut
handhaben.

Tja, meine Frage steht unter b).

TIA,
Hans
 

Lesen sie die antworten

#1 HR Ernst
25/11/2012 - 09:50 | Warnen spam
Am Sat, 24 Nov 2012 22:15:40 +0100 schrieb Hans Alborg:

Hallo Gruppe,

ich bin mal wieder voll motiviert beim VBA-Fummeln:

<Excel 2007>
Es wird eine Textbox mit einer Stringkette gefüllt, welche mit CHR(10)
getrennt abgelegt sind. Somit ergibt sich eine x-zeilige Anordnung in der
Box (ja, Eigenschaften sind entspr. gesetzt).
Was ich möchte:

a) So 1-5 Zeilen der Textbox markieren und diese mit der Maus kopieren. Das
geht wohl leider nicht mit der normalen Rechtsklick- Technik.

Daher habe ich von
http://www.herber.de/forum/archiv/9...951357.htm
einen Codeschnipsel herausgesucht der mir markierten Text aus einer Textbox
in die Zwischenablage bringt.

b) Jetzt sollen die kopierten Zeilen in genauso viele Zeilen z.B. A8...Axx
kopiert werden, mit dem üblichen Markieren der ersten Zelle und Rechtsklick/
Einfügen.
Da klemmt's, denn ich muß den Schreibcursor in eine Zelle setzen und bekomme
alle Zeilen/Einzelstrings nur in dieselbe Zelle.

Nebenher möchte ich die Userform mit der Textbox ausblenden (.Hide) wenn ich
mit der Maus die erste Zelle markiere. Das hoffe ich mit "Modeless" zu
erreichen. Daher kommt das in meinem Code vor, den ich aus o.g. Link
extrahiert habe:
' - In die Userform -
Option Explicit
Private Sub Message01_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Dim TestDaten As DataObject
Set TestDaten = New DataObject
If Button = 2 Then
F_Meldung.Show vbModeless
If Message01.SelLength = 0 Then
MsgBox "Nix gewàhlt", vbInformation
Exit Sub
End If
If Message01.SelLength > 0 Then
TestDaten.SetText Message01.SelText
TestDaten.PutInClipboard
F_Meldung.Caption = "Daten wurden kopiert"
F_Meldung.BackColor = &HFFFF&
End If
End If
End Sub
' -- Im Modul --
Public TestDaten As DataObject
' --
Zum Zeichen daß Copy erledigt ist àndere ich Überschrift und Farbe der
Userform.

-Übrigens, weil ich das so im Netz noch nicht gefunden habe:
Wie macht man eine mehrspaltige Textbox?
Antwort: mehrere Textb. nebeneinander setzen! Gut plaziert sieht man nur
noch einen dünnen Trennstrich.
Ist wohl zu einfach für alte Hasen, aber làßt sich für mich Anfànger gut
handhaben.

Tja, meine Frage steht unter b).

TIA,
Hans



Im Netz habe ich eine Lösung für eine 2-spaltige Combibox gefunfen.
Vielleicht bringt dich das auf eine Idee...

Private Sub ComboBox1_Change()
With Me.ComboBox1
TextBox1.Text = .List(.ListIndex, 1)
End With
End Sub

Private Sub UserForm_Initialize()
With Me.ComboBox1
.ColumnCount = 2
.ColumnWidths = "40;20"
For i = 0 To 5
.AddItem "Spalte1_" & i
.List(i, 1) = "Spalte2_" & i
Next
.ListIndex = 0
End With
End Sub

Gruß

H.-R. Ernst

Ähnliche fragen