Hur skall jag kunna markera en vis text i en textruta? Hej SvenPon(räddare i nöden) Dim texten() As String, j As Long NJae, det gick inte bra. han bara kopiera in den texten igen Jag vet inte om jag har förstått rätt men jag försöker ändå. Du prova den nya kodsnutten va? Jag såg att jag hade skrivit fel innan så jag ändrade den. Japp jag har testat. Jag hittade en kodsnutt som nästan gör som jag ville: Kan ju var att den inte hittar texten Hej Andreas.Markera text i textruta
Så här är det:
Jag replaca en viss text i text1.
Text2 kommer då att se ut så här efter ett antal operationer:
<code>
MultiLang_TEXT1 "En Bra TestSida"
MultiLang_TEXT2 "Känn Dig välkommen till Användarföreningens hemsida."
</code>
För varje replace, så lägger jag in en siffra i list1, i detta fallet ser list ut:
<code>
1
2
</code>
Genom en split så kan jag få tag på den texten som jag vill ha:
<code>
Dim texten() As String, j As Integer
j = List1.ListIndex ' + 1
texten = Split(Text2.text, " ")
Label1.Caption = Replace("Visa inlaggd multilang nr: ", vbTab, "") & j + 1
Info.Caption = Replace(texten(j), vbTab, "")
</code>
Nu skulle jag vilja att just den texten också var markerad i text2.
Är detta möjligt?Sv: Markera text i textruta
Jo jag vet det, men det är alltså texten i text2, som jag aldrig drar musen över utan
jag får ju bara tag på den så här:
<code>
Dim texten() As String, j As Integer
j = List1.ListIndex ' + 1
texten = Split(Text2.text, " ")
Label1.Caption = Replace("Visa inlaggd multilang nr: ", vbTab, "") & j + 1
Info.Caption = Replace(texten(j), vbTab, "")
</code>
Förstår du problemet?Sv: Markera text i textruta
j = List1.ListIndex ' + 1
texten = Split(Text2.text, " ")
Label1.Caption = Replace("Visa inlaggd multilang nr: ", vbTab, "") & j + 1
Info.Caption = Replace(texten(j), vbTab, "")
Chansar :
Text2.SelText = Info.Caption
Eller så är det kanske
Text2.SelText = Label1.CaptionSv: Markera text i textruta
Jag försöker nu så här:
<code>
markeradtext = Len(Info.Caption)'antal tecken på markerad text
totallängd = 0
For Längd = 0 To j
totallängd = totallängd + Len(texten(j))
Next
Text2.SetFocus
Text2.SelText = Text2.SelStart(totallängd) + Text2.SelLength(markeradtext)
</code>
Men det är någonstans jag missar för jag får ett fel:
'Wrong number of arguments or invalide property assignments
Vad tror du?Sv: Markera text i textruta
<code>
Text2.SelStart = InStr(1, Text2.Text, Info.Caption) - 1
Text2.SelLength = Len(Info.Caption)
Text2.SetFocus
</code>
/MickeSv: Markera text i textruta
/MickeSv: Markera text i textruta
Jag får ett error:
Invalid property value.
Det enda som jag kan komma upp med, är att räkna ut startpositionen och sedan ta len på labelen, men det misslyckas för mig.Sv: Markera text i textruta
<code>
s = "MultiLang_TEXT" & j + 1
l = InStr(Text2.text, s)
If l = 0 Then ' 1st spot is string is 1. 0 means "not found"
MsgBox "The text was not found."
Else
Text2.SetFocus
Text2.SelStart = l - 1 ' 1st spot for selected text is numbered 0
Text2.SelLength = Len(s)
End If
</code>
Det som är lite synd är att om jag sätter s = info.caption, så hittar han ingenting, men om jag gör som ovan, så får jag i alla fall början av texten markerad
[REDIGERAT]
När jag ändrade
<code>
Text2.SelLength = Len(s)
'till
Text2.SelLength = Len(Info.Caption)-1
</code>
så blev det kanonbraSv: Markera text i textruta
<code>
Dim Pos As Long
Pos = InStr(1, Text2.Text, Info.Caption, vbTextCompare)
If Pos Then
Text2.SelStart = Pos - 1
Text2.SelLength = Len(Info.Caption)
Text2.SetFocus
Else
MsgBox "text ej funnen!"
End If
</code>Sv: Markera text i textruta
Om du läste min redigering så ser du att jag lyckades.
Ditt förslag lyckades konstigt nog inte.