28. januar 2006 - 10:52Der er
21 kommentarer og 1 løsning
Hent data fra ark "Medlemmer" til 7 stk textBox ved søgning efter
Hej eksperter
Hvordan hænder man data fra ark "medlemmer" til textboxe. for at rettiger dem. Hvor man indtaster id nr i en textbox og og søger efter den række hvor id nr er, og får listet hele rækken i forskællig textboxe, så man kan rettiger i dem og gemme dem igen.
I et modul (ikke i userformens kode) skriver du allerøverst
Public i as long
Din knapkode for at hente data ind i tekstbokse:
Dim o As Long Dim tb As String
Sheets("Medlemmer").Select o = Range("A65000").End(xlUp).Row
tb = TextBox1.Text ' tekstboksen du skriver hvad du søger
For i = 2 To o If LCase(Cells(i, 1).Value) = LCase(tb) Then TextBox2.Text = Cells(i, 1).Value TextBox3.Text = Cells(i, 2).Value Exit For Else MsgBox ("Ingen fundet") End If Next i
Det ser fint ud men jeg har flere ark og Userformen køre ikke fra ark medlemmer. Den er skjult, jeg skal stå på ark medlemmer hvis den skal virke, og så når jeg søger får jeg MsgBox ("Ingen fundet") 8 gange inden den lister rækken jeg har 8 stk textbox
Private Sub CommandButton1_Click() Dim o As Long Dim tb As String
With Sheets("Medlemmer")
o = .Range("A65000").End(xlUp).Row tb = TextBox1.Text
For i = 2 To o If LCase(.Cells(i, 1).Value) = LCase(tb) Then TextBox2.Text = .Cells(i, 1).Value TextBox3.Text = .Cells(i, 2).Value Exit For End If Next i
End With
End Sub
Private Sub CommandButton2_Click()
With Sheets("Medlemmer") .Cells(i, 1).Value = TextBox2.Text .Cells(i, 2).Value = TextBox3.Text End With
End Sub
Globale variable (dvs de kan læses af alle Sub's i projektet) skal placeres i et modul. Desuden taber en variabel i fx. en sub sin værdi, når sub'en er afsluttet.
Jeg er ikke en ørn til vba men jeg vil gerne. jeg kan ikke få det til at virke vis jeg står på ark mvh. kan man slette i ark medlemmer fra userform når man har hente data til textboxse
Jeg tror du mangler nogle punktummer. Det fungerer hér:
With Sheets("Medlemmer")
o = .Range("A65000").End(xlUp).Row tb = TextBox1.Text For i = 2 To o If LCase(.Cells(i, 1).Value) = LCase(tb) Then frmParts.txtPart.Text = Cells(i, 1).Value txtNavn.Text = .Cells(i, 2).Value txtEfternavn.Text = .Cells(i, 3).Value txtAdresse = .Cells(i, 4).Value txtPostnr = .Cells(i, 5).Value txtBy = .Cells(i, 6).Value txtCprnr = .Cells(i, 7).Value txtMailAdresse = .Cells(i, 8).Value Exit For End If Next i End With
Nej det er til mig, jeg passer børn så jeg er ikke så skarp. jeg er heller ikke så god til vba jeg er lige startet. Men man vil jo gerne løbe før man kan gå haha. Nu virker det bare du har været en tålmodig mand. Det enest jeg mangler er en if sætning når man søger og id nummer ikke er der skal der komme en MsgBox ("Ingen id nr fundet") kan du også klare den
Næh, glem det sidste. Det gik lidt for stærkt. Her er koden:
With Sheets("Medlemmer")
o = .Range("A65000").End(xlUp).Row tb = TextBox1.Text For i = 2 To o + 1 If LCase(.Cells(i, 1).Value) = LCase(tb) Then txtPart.Text = .Cells(i, 1).Value txtNavn.Text = .Cells(i, 2).Value txtEfternavn.Text = .Cells(i, 3).Value txtAdresse = .Cells(i, 4).Value txtPostnr = .Cells(i, 5).Value txtBy = .Cells(i, 6).Value txtCprnr = .Cells(i, 7).Value txtMailAdresse = .Cells(i, 8).Value Exit For Else: If i = o Then MsgBox ("Ingen fundet") End If Next i
End With
Du skal udvide løkken med 1, så er du sikker på at komme forbi celler med værdi, og når du så langt (i = o), så kan du konstatere at der ikke blev fundet noget.
Det kan man godt. Du kan anvende variablen 'i' igen, som jo angiver rækken i arket.
Men i så fald vil jeg anbefale at du nulstiller tekstboksene hver gang du laver en Søg så du ikke kommer til at slette på en tom linie. (Hvis du laver en Søg uden at finde noget, er 'i' jo blevet i+1 og din form viser stadig de data du fandt sidst)
Indsæt linier som denne først i Søg knappens kode:
txtPart.Text = "" osv for hver tekstboks.
I din Slet knap, kan du prøve denne kode:
Private Sub CommandButton1_Click() Dim Cancel As Boolean
a = MsgBox("Du er ved at slette vil du det ", vbYesNo)
With Sheets("Medlemmer") If a = vbNo Then Cancel = True Else .Cells(i, 1).Value = "" .Cells(i, 2).Value = "" .Cells(i, 3).Value = "" .Cells(i, 4).Value = "" .Cells(i, 5).Value = "" .Cells(i, 6).Value = "" .Cells(i, 7).Value = "" .Cells(i, 8).Value = "" End If End With End Sub
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.