Avatar billede p_h_g Nybegynder
26. september 2005 - 20:49 Der er 9 kommentarer og
1 løsning

Valg i Listbox opdatere tekst i textbox

Hvordan opdatere tekst i textbox via valg i en listbox?

Jeg har en listbox med en række felter :
En kolonde fra exel hentes ind i en listbox f.eks. A1, B1, C1, osv...
og en tekstboks der er tom.

når man så markere A skal tekstboxen hent indholdet af et felt på arket og når jeg så markere B opdater til et andet felt men den opdater ikke?

nogen forslag?
Avatar billede brynil Nybegynder
26. september 2005 - 21:09 #1
Private Sub ListBox1_Click()
    TextBox1.Text = ListBox1.Text
End Sub
Avatar billede brynil Nybegynder
26. september 2005 - 21:12 #2
Hmm, det var vist ikke det du mente. Kan du være mere præcis med hvad der skal hentes hvor på arket og hvad der så skal ske!
Avatar billede p_h_g Nybegynder
26. september 2005 - 21:26 #3
så prøver jeg at være lidt mere præcis

har en listbox der hedder lstKortType

With lstKortType
.RowSource = "MATA"
.ListIndex = 0
End With

som her grundlag for denne funktion:

Private Sub cmdOK_Click()
Dim i As Integer
Dim kopidata As String
    A = ActiveSheet.Name
    Sheets(A).Select
    Rows("10:10").Select
    Selection.Insert Shift:=xlDown
    Selection.Insert Shift:=xlDown
    i = lstKortType.ListIndex + 1
    Sheets("DATA").Select
    kopidata = "B" + LTrim(Str(Int(i + 2))) + ":" + "J" + LTrim(Str(Int(i + 2)))
    Range(kopidata).Select
    Selection.COPY
    Sheets(A).Select
    Range("B10").Select
    ActiveSheet.Paste
    Sheets("DATA").Select
    kopidata = "L" + LTrim(Str(Int(i + 2))) + ":" + "T" + LTrim(Str(Int(i + 2)))
    Range(kopidata).Select
    Selection.COPY
    Sheets(A).Select
    Range("B11").Select
    ActiveSheet.Paste
    frmTEST2.Hide
End Sub

men listbox(ene) skal så vise den data man flytter over, i textbox'ene TxtA til TxtH:

  kopidata = "B" + LTrim(Str(Int(i + 3)))
  TxtA.Text = Sheets("DATA").Range(kopidata)
  kopidata = "C" + LTrim(Str(Int(i + 3)))
  TxtB.Text = Sheets("DATA").Range(kopidata)
  kopidata = "E" + LTrim(Str(Int(i + 3)))
  TxtC.Text = Sheets("DATA").Range(kopidata)
  kopidata = "F" + LTrim(Str(Int(i + 3)))
  TxtD.Text = Sheets("DATA").Range(kopidata)
  kopidata = "G" + LTrim(Str(Int(i + 3)))
  TxtE.Text = Sheets("DATA").Range(kopidata)
  kopidata = "H" + LTrim(Str(Int(i + 3)))
  TxtF.Text = Sheets("DATA").Range(kopidata)
  kopidata = "I" + LTrim(Str(Int(i + 3)))
  TxtG.Text = Sheets("DATA").Range(kopidata)
  kopidata = "J" + LTrim(Str(Int(i + 3)))
  TxtH.Text = Sheets("DATA").Range(kopidata)

så det er at tvinge disse til at opdatere ved valg i listboxen...

giver de nogen mening?
Avatar billede brynil Nybegynder
26. september 2005 - 22:01 #4
Ikke synderligt, for mig ihvertfald.

Er det noget med at nulstille listboxen: lstKortType.Clear
og så tilføje nye værdier:  lstKortType.AddItem txtA.text
                            lstKortType.AddItem txtB.text
osv.
Avatar billede bak Seniormester
26. september 2005 - 22:49 #5
Det her virker for mig, men jeg er ikke helt klar over om dine textboxe er i arket eller på formen

Private Sub cmdOK_Click()
Dim i As Integer, i2 As Integer, i3 As Integer
Dim kopidata As String
Dim wshAct As Worksheet
Dim wshData As Worksheet
  Set wshAct = ActiveSheet
  Set wshData = Worksheets("Data")
  wshAct.Rows("10:11").Insert Shift:=xlDown
  i = CInt(lstKortType.ListIndex + 1)
  i2 = i + 2: i3 = i + 3
  wshData.Range("B" & i2 & ":J" & i2).Copy Destination:=wshAct.Range("B10")
  wshData.Range("L" & i2 & ":T" & i2).Copy Destination:=wshAct.Range("B11")
  With wshData
      Me.txtA.Text = .Range("B" & i3)
      txtB.Text = .Range("C" & i3)
      txtC.Text = .Range("E" & i3)
      txtD.Text = .Range("F" & i3)
      txtE.Text = .Range("G" & i3)
      txtF.Text = .Range("H" & i3)
      txtG.Text = .Range("I" & i3)
      txtH.Text = .Range("J" & i3)
  End With
End Sub
Avatar billede p_h_g Nybegynder
26. september 2005 - 23:29 #6
wow, tak! det var noget af et svar, men det var ikke helt det jeg mente, de nævnte textbox'e er i den vba, der indeholder OK knappen, der aktiver "Private Sub cmdOK_Click()"
Alt textboxene skal er at vise den text der flyttes over, hvis man trykker på OK ved den valgte i listboxen "lstKortType", og markere man en anden i listen skal felterne til textboxene så automatisk skifte.

Altså en form for hvis du vælger denne vil følgende data blive sat ind, og så kan man så scroll'e til man finder det der passer og så trykke på OK hvorefter "Private Sub cmdOK_Click()" køres.

...så jeg tror brynil har fat i det rigtige sted, det er nok under click i listboxen koden skal stå

"Er det noget med at nulstille listboxen: lstKortType.Clear" (nej nulstille textboxen)
"og så tilføje nye værdier:  lstKortType.AddItem txtA.text" (ja men i textboxen via. valg i listboxen)

(det kan godt være 100 point var for lidt)
Avatar billede bak Seniormester
26. september 2005 - 23:54 #7
ok, jeg kan ikke se at en nulstilling behøves.

Her er koden, men opdelt

Private Sub lstKortType_Click()
Dim i As Integer, i2 As Integer
Dim kopidata As String
Dim wshData As Worksheet
  Set wshData = Worksheets("Data")
  i = CInt(lstKortType.ListIndex + 1)
  i2 = i + 3
  With wshData
      Me.txtA.Text = .Range("B" & i2)
      txtB.Text = .Range("C" & i2)
      txtC.Text = .Range("E" & i2)
      txtD.Text = .Range("F" & i2)
      txtE.Text = .Range("G" & i2)
      txtF.Text = .Range("H" & i2)
      txtG.Text = .Range("I" & i2)
      txtH.Text = .Range("J" & i2)
  End With
End Sub

Private Sub cmdOK_Click()
Dim i As Integer, i2 As Integer
Dim kopidata As String
Dim wshAct As Worksheet
Dim wshData As Worksheet
  Set wshAct = ActiveSheet
  Set wshData = Worksheets("Data")
  wshAct.Rows("10:11").Insert Shift:=xlDown
  i = CInt(lstKortType.ListIndex + 1)
  i2 = i + 3
  wshData.Range("B" & i2 & ":J" & i2).Copy Destination:=wshAct.Range("B10")
  wshData.Range("L" & i2 & ":T" & i2).Copy Destination:=wshAct.Range("B11")
End Sub
Avatar billede p_h_g Nybegynder
27. september 2005 - 18:47 #8
Perfekt!

Skulle kun bruge "Private Sub lstKortType_Click()" men tak for det hele.
den var en foran listboxen så ændrede "i2 = i + 3" til "i2 = i + 2"

takker for hjælpen
Avatar billede p_h_g Nybegynder
27. september 2005 - 18:49 #9
smid lige et svar bak så du kan få point (også tak til brynil for at hjælpe)
Avatar billede bak Seniormester
27. september 2005 - 20:08 #10
ok :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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