Avatar billede duno Nybegynder
28. maj 2011 - 16:39 Der er 5 kommentarer

Ændre textbox indhold med checkbox

Er det muligt at lave eks 5 checkbokse og et tilhørende tekstfelt, checkboksene skal hedde 1,2,3,4,5 hvis alle Checkbokse er diabled skal teksten i tekstboksen være 1a2a3a4a5a

men vinges eks checkboks 1 og 3 og 5af skal tekstbokskoden være 1b2a3b4a5b

Altså ved markering ændres A til B

og er der nogen som har et godt kodeforslag på min ide
Avatar billede Lene Fredborg Ekspert
28. maj 2011 - 18:03 #1
Du kan lave en Change-event for hver af checkboksene, som udskifter den relevante tekst i tekstboksen. Nedenstående er lavet til en UserForm, hvor tekstboksen hedder TextBox1 og de 5 checkbokse hedder CheckBox1-5. I eksemplet, jeg har lavet, har jeg brugt store A og B. Som du kan se, er de 5 Subs ens bortset fra, at de udskifter forskellige dele af teksten i tekstboksen.

Det kan lade sig gøre at skrive en fælles Sub, som udfører selve udskiftningen af teksten, men der skal være en event pr. checkbox alligevel.

-----------KODE TIL USERFORM START--------------
Option Explicit

Private Sub UserForm_Initialize()
    'Sæt startværdi i tekstboks
    TextBox1.Value = "1A2A3A4A5A"
End Sub

Private Sub CheckBox1_Change()
    If CheckBox1.Value = True Then
        TextBox1.Value = Replace(TextBox1.Value, "1A", "1B")
    Else
        TextBox1.Value = Replace(TextBox1.Value, "1B", "1A")
    End If
End Sub

Private Sub CheckBox2_Change()
    If CheckBox2.Value = True Then
        TextBox1.Value = Replace(TextBox1.Value, "2A", "2B")
    Else
        TextBox1.Value = Replace(TextBox1.Value, "2B", "2A")
    End If
End Sub

Private Sub CheckBox3_Change()
    If CheckBox3.Value = True Then
        TextBox1.Value = Replace(TextBox1.Value, "3A", "3B")
    Else
        TextBox1.Value = Replace(TextBox1.Value, "3B", "3A")
    End If
End Sub

Private Sub CheckBox4_Change()
    If CheckBox4.Value = True Then
        TextBox1.Value = Replace(TextBox1.Value, "4A", "4B")
    Else
        TextBox1.Value = Replace(TextBox1.Value, "4B", "4A")
    End If
End Sub

Private Sub CheckBox5_Change()
    If CheckBox5.Value = True Then
        TextBox1.Value = Replace(TextBox1.Value, "5A", "5B")
    Else
        TextBox1.Value = Replace(TextBox1.Value, "5B", "5A")
    End If
End Sub
Avatar billede duno Nybegynder
28. maj 2011 - 19:38 #2
Da jeg kørte koden første gang, kom der 22 fejl, da jeg så ændrede Value til Text forsvandt fejlene, men der sker stadig intet når jeg tjekker resultatet

der kommer heller ingen tekst i textbox1

Option Explicit On
Public Class Form1

    Private Sub UserForm_Initialize()
        TextBox1.Text = "1A2A3A4A5A"
    End Sub

    Private Sub CheckBox1_Change()
        If CheckBox1.Checked = True Then
            TextBox1.Text = Replace(TextBox1.Text, "1A", "1B")
        Else
            TextBox1.Text = Replace(TextBox1.Text, "1B", "1A")
        End If
    End Sub

    Private Sub CheckBox2_Change()
        If CheckBox2.Checked = True Then
            TextBox1.Text = Replace(TextBox1.Text, "2A", "2B")
        Else
            TextBox1.Text = Replace(TextBox1.Text, "2B", "2A")
        End If
    End Sub

    Private Sub CheckBox3_Change()
        If CheckBox3.Checked = True Then
            TextBox1.Text = Replace(TextBox1.Text, "3A", "3B")
        Else
            TextBox1.Text = Replace(TextBox1.Text, "3B", "3A")
        End If
    End Sub

    Private Sub CheckBox4_Change()
        If CheckBox4.Checked = True Then
            TextBox1.Text = Replace(TextBox1.Text, "4A", "4B")
        Else
            TextBox1.Text = Replace(TextBox1.Text, "4B", "4A")
        End If
    End Sub

    Private Sub CheckBox5_Change()
        If CheckBox5.Checked = True Then
            TextBox1.Text = Replace(TextBox1.Text, "5A", "5B")
        Else
            TextBox1.Text = Replace(TextBox1.Text, "5B", "5A")
        End If
    End Sub

End Class

skal jeg lave en slags relation imellem checkbox1-5 og textbox1

Jeg har ikke rørt ved VB siden 95, så er en smule rusten
Avatar billede Lene Fredborg Ekspert
28. maj 2011 - 23:40 #3
Den kode, jeg har lavet, er til VBA (Visual Basic for Applications), og den ændrer korrekt teksten i TextBox1. Jeg kan se på "Option Explicit On", at det ikke er VBA, du bruger.

Relationen mellem CheckBox1-5 og TextBox1 består i, at CheckBox1-5 via koden bliver instrueret om at ændre den tilhørende værdi i TextBox1 afhængigt af, om checkboksen er slået til eller fra. Det var det, du bad om i dit spørgsmål

I mit eksempel bliver TextBox1 udfyldt med værdien "1A2A3A4A5A" fra starten. Hvis din TextBox1 ikke indeholder noget med "1A", "2A", ... "5A",  eller "1B", "2B" osv. vil ændring af checkboksene ikke ændre på noget. Du skal tilrette koden til de enkelte checkbokse, så den passer med, hvad de skal udskifte.
Avatar billede duno Nybegynder
29. maj 2011 - 11:03 #4
Du har ganske ret i at det virker fantastisk i Excel, Men lagde jo netop opgaven i Visual Basic, da mit problem ikke ligger i excel VBA, men i Visual Basic VB..

Kan man evt exportere funktionen fra Excel og lave det om til en EXE fil, som det er mulight i VB

Det er det eneste der mangler for at Excel rent faktisk vil være brugbart i denne sammenhæng

Skal kunne bruge funktionen på alle maskiner, win 95,98,2000 XP og Win7, de fleste af dem har ikke Office installeret.

Ellers så lad os lukke den her, og du skal have mange tak for hjælpen, så lærte jeg jo også lidt mere om Excel :o) vidste faktisk ikke at man kunne kode i Excel, det giver jo helt nye muligheder i min verden , tak
Avatar billede Lene Fredborg Ekspert
29. maj 2011 - 13:10 #5
Hvis du tjekker spørgsmål under Visual Basic, vil du se, at mange af dem handler om VBA. På baggrund af indholdet i dit spørgsmål antog jeg, at det handlede om VBA.

Koden virker ikke kun i Excel. Den er lavet i Word.

Det er muligt, at du kan eksportere til noget brugbart - jeg ved det ikke. Se f.eks.:
http://forums.esri.com/Thread.asp?c=93&f=992&t=65881
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester