Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text in Textbox markieren

Text in Textbox markieren
13.01.2009 07:04:00
Thomas
Hallo zusammen,
ich habe ein kleines Problem mit Textboxen.
Ich will eine Textbox erstellen in die ein Text eingetragen wird. Soweit hab ich das auch noch geschafft, allerdings will ich danach diesen Text gerne kopieren, in einem String speichern und im Firefox öffnen.
Probleme macht mir sowohl das kopieren des Texts in der Textbox und dann noch, dass es sich bei dem Text um einen Code handelt, so dass ich diesen irgendwie nicht in einem String speichern kann.
Mein Code sieht bisher wie folgt aus:
Dim tag, monat, jahr, startstunde, startminute, endestunde, endeminute, programm As String
Sheets("Tabelle1").Select
tag = Cells(2, 2).Value
monat = Cells(3, 2).Value
jahr = Cells(4, 2).Value
startstunde = Cells(7, 2).Value
startminute = Cells(8, 2).Value
endestunde = Cells(11, 2).Value
endeminute = Cells(12, 2).Value
endeminute = Cells(14, 2).Value
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 380.25, 135#, _
231.75, 167.25).Select
Selection.Characters.Text = _
"javascript: {sForm = document.formular.sStartdateDay;arrVals=arrStartdateDay;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElementById('sdivStartdateDay')."
Selection.Characters(201).Insert String:= _
"innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionStartdateDay(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionStartdateDayS(""+iStep+"")"",1);}function changeSelectionStartdateM"
Selection.Characters(401).Insert String:= _
"onthS(iStep){sForm = document.formular.sStartdateMonth;arrVals=arrStartdateMonth;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElementById('sdivStartdateMo"
Selection.Characters(601).Insert String:= _
"nth').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionStartdateMonth(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionStartdateMonthS(""+iStep+"")"",1);}function changeSelection"
Selection.Characters(801).Insert String:= _
"StartdateYearS(iStep){sForm = document.formular.sStartdateYear;arrVals=arrStartdateYear;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElementById('sdivStar"
Selection.Characters(1001).Insert String:= _
"tdateYear').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionStartdateYear(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionStartdateYearS(""+iStep+"")"",1);}function changeSelec"
Selection.Characters(1201).Insert String:= _
"tionStartdateHourS(iStep){sForm = document.formular.sStartdateHour;arrVals=arrStartdateHour;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElementById('sdiv"
Selection.Characters(1401).Insert String:= _
"StartdateHour').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionStartdateHour(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionStartdateHourS(""+iStep+"")"",1);}function changeS"
Selection.Characters(1601).Insert String:= _
"electionStartdateMinuteS(iStep){sForm = document.formular.sStartdateMinute;arrVals=arrStartdateMinute;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElement"
Selection.Characters(1801).Insert String:= _
"ById('sdivStartdateMinute').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionEnddateMinute(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionEnddateMinuteS(""+iStep+"")"",1);}func"
Selection.Characters(2001).Insert String:= _
"tion changeSelectionEnddateHourS(iStep){sForm = document.formular.sEnddateHour;arrVals=arrEnddateHour;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElement"
Selection.Characters(2201).Insert String:= _
"ById('sdivEnddateHour').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionEnddateHour(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionEnddateHourS(""+iStep+"")"",1);}function cha"
Selection.Characters(2401).Insert String:= _
"ngeSelectionEnddateMinuteS(iStep){sForm = document.formular.sEnddateMinute;arrVals=arrEnddateMinute;if(arrVals[sForm.value*1.0 +iStep]>=0){sForm.value = sForm.value*1.0 + iStep;};document.getElementBy"
Selection.Characters(2601).Insert String:= _
"Id('sdivEnddateMinute').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionStartdateMinute(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionStartdateMinuteS(""+iStep+"")"",1);}func"
Selection.Characters(2801).Insert String:= _
"tion changeSelectionTVStationS(iStep){sForm = document.formular.sTVStationf1CC3633C579A90CFDD895E64021E2163;arrVals=arrTVStation;if(arrVals[sForm.value*1.0 +iStep]){sForm.value = sForm.value*1.0 + iSt"
Selection.Characters(3001).Insert String:= _
"ep;};document.getElementById('sdivTVStation').innerHTML = arrVals[sForm.value] ;aktiv=0;}function changeSelectionTVStation(iStep){if(!aktiv) aktiv = setTimeout(""changeSelectionTVStationS(""+iStep+"")"",1"
Selection.Characters(3201).Insert String:= _
"000);}function ResetVals(){document.formular.sStartdateDay.value=" & tag & " ;document.formular.sStartdateMonth.value=" & monat & ";document.formular.sStartdateYear.value=" & jahr & ";document.formular.sStartdateHour.value=" & startstunde & ";docu"
Selection.Characters(3401).Insert String:= _
"ment.formular.sStartdateMinute.value=" & startminute & ";document.formular.sEnddateHour.value=" & endestunde & ";document.formular.sEnddateMinute.value=" & endeminute & ";document.formular.sTVStationf1CC3633C579A90CFDD895E64021E2163.value=" & programm & ";changeSele"
Selection.Characters(3601).Insert String:= _
"ctionStartdateDayS(0);changeSelectionStartdateMonthS(0);changeSelectionStartdateHourS(0);changeSelectionStartdateMinuteS(0);changeSelectionStartdateYearS(0);changeSelectionEnddateHourS(0);changeSelect"
Selection.Characters(3801).Insert String:= _
"ionEnddateMinuteS(0);changeSelectionTVStationS(0);aktiv=0;}"
Dim name As String
name = TextBox.Value 'mir ist bewusst dass es so nicht geht
Shell "C:\Firefox.EXE " & name,
End sub
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Textbox markieren
13.01.2009 09:23:00
Christoph
Hallo Thomas!
Ich hoffe,dir weiterhelfen zu können,so wie ich das sehe,müßte die Sache ganz leicht zu lösen sein...
Ich hab in meinem Programm auch eine Textbox:
Wenn du im Editor deine Userform doppelklickst und das Textfeld anklickst,erscheint unten links ein Fenster "Eigenschaften"
Also immer gerade die Eigenschaften von dem "Werkzeug" welches du auf deiner Userform gerade im Fokus hast.
In der ersten Spalte kannst du deinem Textfeld einen Namen geben: (Name)
Z.B "txtbox"
Wenn du nun mit der rechten Maustaste in der Auswahl links auf deine Userform klickst kommst du zu deinem Code.
Wichtig ist jetzt,daß du deinen Code hier rein schreibst,dann kannst du nämlich den Text in deiner Textbox ganz einfach über den Namen der Textbox abfragen.
Bsp.:
Eine Userform mit einem Textfeld, einem "Zurück" - Button und einem "Senden" - Button
Code:
Option Explicit

Private Sub UserForm_Initialize()
'Nachfolgendes kann man auch in den Eigenschaften der Steuerelemete setzen
cmdback.Default = True ' Auf Default setzen
cmdsend.Default = True ' Auf Default setzen
'cmdEscape.Cancel = True ' bei ESC auslösen
txtbox.TabIndex = 0 (Der Cursor blinkt beim Öffnen der UF im Textfeld)
txtbox = "" (Das Textfeld wird leer gemacht)
End Sub



Private Sub cmdback_Click() 'cmdback ist der Name des "Zurück" - Button
'Hier evt. Befehle eingeben
Me.Hide 'Ausblenden der Userform
End Sub



Private Sub cmdsend_Click() 'cmdsend ist der Name des "Senden" - Button
Dim Name
'Hier muss jetzt dein Code rein!
'Und zwar kannst du dann die Textbox ganz einfach abfragen über ihren Namen.
'Bsp.:
Name = txtbox
'Jetzt hast du den Inhalt der Textbox in der Variablen "Name" deklariert!
'Nun nur noch die Variable "Name" da in deinem Code verbauen,wo der Inhalt der textbox  _
gebraucht wird!
Me.Hide 'Ausblenden der Userform
End Sub


Weißt du wie du den Inhalt einer Variablen im Code als Text wieder ausgeben kannst?
Und ich hoffe,ich konnte dir helfen.
Gruß Christoph

Anzeige
AW: Text in Textbox markieren
13.01.2009 09:30:00
dirk
Hallo!
Damit Du den text in der texbox verwenden kannst musst du erst mal den focus auf die textbox setzen:
TextBox.SetFocus
dann alles markieren
With TextBox
.SelStart = 0
.SelLength = Len(TextBox)
End With
sollte nun mit name=selection.value gehen.
Dirk aus Dubai
Anzeige
AW: Text in Textbox markieren
13.01.2009 09:37:00
Thomas
TextBox.SetFocus klappt irgendwie nicht.
Muss ich Textbox vorher irgendwie definieren?
Weil mit ActiveSheet.Shapes("Text Box 1").SetFocus und mit Textbox(1).SetFocus geht es auch nicht.
AW: Text in Textbox markieren
13.01.2009 11:42:00
dirk
Hallo!
Wo befindet sich die Textbox? Hast Du diese in das Tabellenblatt eingefuegt oder hast Du diese in einer Userform?
Gruss
Dirk aus Dubai
Anzeige
AW: Text in Textbox markieren
13.01.2009 13:21:00
Thomas
Die Textbox ist in einem Tabellenblatt
AW: Text in Textbox markieren
13.01.2009 15:35:05
dirk
Hallo Thomas,
habe mir das nochmal 'reingezogen und hatte da was uebersehen. Du hasst einen String welcher laenger ist als 255 Zeichen. Da schneidet Excel einfach ab.
Um diesen String zu behandeln musst Du folgenden weg gehen:
Dim shtName As String
shtName = Selection.Name
Cells(1, 1).Value = GetTextboxString(Shapes(shtName))
Dieses Kommandos einfuegen um den Text aus der textbox auszulesen und in Zelle A1 zu schreiben
Folgende

Function einfuegen:


Function GetTextboxString(TB As Object) As String
Dim s As String
Dim RetStr As String, retstrNo As Long
Dim i As Integer
'MsgBox Len(TB.TextFrame.Characters.Text)
s = TB.TextFrame.Characters.Text
RetStr = s
i = 255
While Len(s) = 255
s = TB.TextFrame.Characters(i + 1).Text
RetStr = RetStr & s
If Len(s) >= 255 Then
i = i + 255
End If
Wend
retstrNo = Len(RetStr)
GetTextboxString = RetStr
MsgBox Len(GetTextboxString)
End Function


Ich habe das bei Microsoft gefunden und angepasst, da es nicht auf anhieb funktioniert hat (object war falsch referenziert).
http://support.microsoft.com/kb/505226/de
Ich hoffe das hilft Dir weiter.
Gruesse
Dirk aus Dubai

Anzeige
AW: Text in Textbox markieren
15.01.2009 07:45:00
Thomas
Super funktioniert. Vielen Dank.
;
Anzeige
Anzeige

Infobox / Tutorial

Text in Textbox markieren und verwalten


Schritt-für-Schritt-Anleitung

  1. Textbox erstellen:

    • Gehe zu deinem Excel-Arbeitsblatt.
    • Wähle den Reiter "Entwicklertools" und klicke auf "Einfügen", um eine Textbox hinzuzufügen.
  2. Textbox benennen:

    • Doppelklicke auf die Textbox, um das Eigenschaftenfenster zu öffnen.
    • Gib der Textbox einen Namen, z.B. txtbox.
  3. Text in der Textbox speichern:

    • Verwende folgenden VBA-Code, um den Text in der Textbox in einer Variablen zu speichern:
      Dim Name As String
      Name = txtbox.Text
  4. Text in eine Zelle schreiben:

    • Um den Text in eine Zelle zu übertragen, kannst du diesen Code verwenden:
      Cells(1, 1).Value = txtbox.Text
  5. Textbox fokussieren und Text markieren:

    • Setze den Fokus auf die Textbox und markiere den Text:
      txtbox.SetFocus
      With txtbox
      .SelStart = 0
      .SelLength = Len(.Text)
      End With

Häufige Fehler und Lösungen

  • Fehler: Textbox.SetFocus funktioniert nicht.

    • Lösung: Stelle sicher, dass die Textbox richtig benannt ist. Verwende ActiveSheet.Shapes("TextboxName").SetFocus, um den Fokus zu setzen.
  • Fehler: String ist länger als 255 Zeichen.

    • Lösung: Verwende eine Funktion, um den Text aus der Textbox zu extrahieren. Beispiel:
      Function GetTextboxString(TB As Object) As String
      Dim s As String
      Dim RetStr As String
      s = TB.TextFrame.Characters.Text
      RetStr = s
      ' Füge Logik hinzu, um längere Strings zu verarbeiten
      GetTextboxString = RetStr
      End Function

Alternative Methoden

  • HTML Text markieren in einer Webanwendung:

    • Wenn du mit HTML arbeitest, kannst du den Text in einer Textbox ähnlich markieren. Verwende JavaScript, um den Text zu markieren, z.B.:
      document.getElementById("myTextbox").select();
  • Verwendung von Formularen:

    • Erstelle eine Userform in VBA, um eine bessere Benutzeroberfläche zu bieten. Textboxen in Userforms haben den Vorteil, dass du den Text einfacher verarbeiten kannst.

Praktische Beispiele

  • Beispiel für das Speichern von Text:

    Private Sub cmdsend_Click()
      Dim name As String
      name = txtbox.Text
      MsgBox "Der eingegebene Text ist: " & name
    End Sub
  • Text hervorheben in einer Userform:

    Private Sub UserForm_Initialize()
      txtbox.SetFocus
      txtbox.SelStart = 0
      txtbox.SelLength = Len(txtbox.Text)
    End Sub

Tipps für Profis

  • Nutze textbox.Text für einfache Textmanipulationen.
  • Vermeide zu lange Strings in einer Textbox, da Excel diese auf 255 Zeichen beschränkt.
  • Experimentiere mit der Eigenschaft MultiLine, um längere Texte zu bearbeiten.
  • Verwende html text markieren in Kombination mit VBA, um Text in Webanwendungen zu steuern.

FAQ: Häufige Fragen

1. Wie markiere ich Text in einer Textbox? Um Text in einer Textbox zu markieren, setze den Fokus auf die Textbox und benutze die .SelStart und .SelLength Eigenschaften.

2. Wie kann ich den Text aus einer Textbox in eine Zelle kopieren? Verwende Cells(row, column).Value = txtbox.Text, um den Inhalt der Textbox in eine Zelle zu übertragen.

3. Was mache ich, wenn die Textbox keinen Text speichert? Stelle sicher, dass die Textbox korrekt benannt ist und dass der Code die richtige Syntax hat. Überprüfe auch, ob die Textbox den Fokus hat.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige