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

VBA gibt es „ActiveTextbox“ wie ActiveCell

VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 17:16:30
Lupus
Hallo Excel-User,
gibt es für Controls (Textboxen) so etwas Ähnliches wie ActiveCell, also „ActiveTextbox“?
Ich will ein Makro schreiben, das für mehrer Textboxen gelten soll, will aber nicht mehrmals den gleichen Code für jede Textbox schreiben.
Gruß Lupus

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 17:24:28
ChrisL
Hi Lupus
Vielleicht sowas...
Dim i as Byte
For i = 1 To 10
Controls("TextBox" & i) = "XZ"
Next i
Gruss
Chris
AW: VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 17:26:03
Hajo_Zi
Hallo Lupus
falls es um UserForm geht programiere eine Klasse. Kommt auch drauf an welches Ereignis du auswerten willst für das Change Ereignis ist ein Beispiel auf meiner HP auf der Seite VBA.

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
AW: VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 17:39:25
Lupus
Hall Chris und Hajo,
dank Euch beiden.
Mein Problem ist folgendes.
Habe mir ein UF-Kontextmenue mit "einfügen", "ausschneiden" usw. erstellt und möchte nun das entsprechende Makros ausgeführt werden.
In der VBA-Hilfe habe ich nur folgendes gefunden:
Dim MyData as DataObject

Private Sub CommandButton1_Click()
'Need to select text before copying it to Clipboard
TextBox1.SelStart = 0
TextBox1.SelLength = TextBox1.TextLength
TextBox1.Copy
MyData.GetFromClipboard
TextBox2.Text = MyData.GetText(1)
End Sub


Private Sub UserForm_Initialize()
Set MyData = New DataObject
TextBox1.Text = "Move this data to the " _
& "Clipboard, to a DataObject, then to "
& "TextBox2!"
End Sub

Da das Kontextmenue aber für jede Textbox gelten soll, will ich, wie bereits erwähnt, nicht für jede Textbox einzeln diese Makros schreiben.
Übrigens mit dem erstellen neuer Klassen habe ich noch keine Erfahrung.
Gruß Lupus
Anzeige
AW: VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 17:49:36
Nepumuk
Hallo Lupus,
wie hast du dir den Ablauf in dem Userform vorgestellt?
Beispiel: Textbox X anklicken. Commanbutton Copy anklicken. Textbox Y anklicken - Text aus Textbox X wird nach Textbox Y kopiert.
Gruß
Nepumuk
AW: VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 17:55:33
Lupus
Hallo Nepumuk,
> wie hast du dir den Ablauf in dem Userform vorgestellt?
Eigentlich ganz einfach, wie in jeder Windows-Anwendung.
Egal in welcher Textbox sich mein Cursor befindet, rechte Maustaste drücken, "cut", "copy" oder "past" anklicken und entsprechende Aktion sollte ausgeführt werden.
Gruß Lupus
AW: VBA gibt es „ActiveTextbox“ wie ActiveCell
04.02.2004 19:51:32
Nepumuk
Hallo Lupus,
noch nicht ganz perfekt, aber im Prinzip:
https://www.herber.de/bbs/user/3422.xls
Gruß
Nepumuk
Anzeige
AW: Verbesserte Version
05.02.2004 15:18:17
Lupus
Hallo Nepumuk,
uff, ich bin erschlagen, danke.
Habe noch 'ne kleine Bitte. Köntest Du folgende Zeile (außer Trim) mal interpretieren?
If Trim(.Text) = "" Then myDataObject.SetText Chr(1) Else myDataObject.SetText .Text
Gruß Lupus
AW: Verbesserte Version
05.02.2004 17:17:46
Nepumuk
Hallo Lupus,
wenn in die Textbox leer ist, wird in das DataObject das Zeichen Chr(1) geladen, da ich das Objekt später abfrage. Wenn es einen Leerstring enthält, wird das Image "Einfügen" nicht angezeigt. Deswegen könnte eine leere Textbox nicht kopiert werden. Ich wollte es der Funktion in einer Tabelle nachmachen und musste darum zu dieser Konstruktion greifen. Beim Klick auf Image3 wird Chr(1) wieder duch einen Leerstring ersetzt. Das ganze funktioniert unabhängig von der Anzahl der Textboxen, sprich es passt sich automatisch an.
Heute morgen habe ich noch mal ein bisschen was geändert. Es kommt jetzt ohne Hilfstextbox aus:
https://www.herber.de/bbs/user/3437.xls
Gruß
Nepumuk
Anzeige
AW: Verbesserte Version
05.02.2004 17:47:45
Lupus
Hallo Nepumuk,
danke.
Was hälts Du von folgender Veränderung?

Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'ausschneiden selektierter Text
If Button = 1 And Shift = 0 Then
With myTextBox
If Trim(.Text) = "" Then myDataObject.SetText Chr(1) Else myDataObject.SetText .SelText
.SelText = ""
End With
ausschalten
End If
End Sub


Private Sub Image2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'kopieren selektierter Text
If Button = 1 And Shift = 0 Then
With myTextBox
If Trim(.Text) = "" Then myDataObject.SetText Chr(1) Else myDataObject.SetText .SelText
End With
ausschalten
End If
End Sub

Der Einfüge-Code müßte noch die Cursurposition berücksichtigen, das bekomme ich aber noch hin.
Warum arbeitest Du eigenlich mit Images? Wäre es nicht einfacher man greift direkt auf die entsprechenden Controls für "Ausschneiden", "Kopieren" und "Einfügen" zu?
Etwa so:
If m_Menue Is Nothing Then
Set m_Menue = Application.CommandBars.Add(Name:="TestMenu", Position:=msoBarPopup, Temporary:=False)

Set m_MenueItem1 = m_Menue.Controls.Add(msoControlButton)
With m_MenueItem1
.Style = 3
.Caption = "&cut"
.OnAction = "Makro1"
.FaceId = 21
End With
Habe mich schon die ganze Zeit gewundert woher "Deine" Images herkommen.
Gruß Lupus
Anzeige
AW: Verbesserte Version
05.02.2004 18:39:59
Nepumuk
Hallo Lupus,
lass mich das mal sehen, wenn du das mit deiner Commanbar zum laufen bringst.
Gruß
Nepumuk
AW: mach' ich, kann aber etwas dauern, o.T.
06.02.2004 08:27:17
Lupus

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige