Avatar billede mvhansen Nybegynder
28. januar 2006 - 10:52 Der 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.

MVH

Mvhansen
Avatar billede rosco Novice
28. januar 2006 - 11:13 #1
Data; Formular.
Avatar billede brynil Nybegynder
28. januar 2006 - 11:29 #2
Og denne metode:

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


I din knapkode for at gemme den nye tekst:

Sheets("Medlemmer").Select

Cells(i, 1).Value = TextBox2.Text
Cells(i, 2).Value = TextBox3.Text

Du kan selv udvide formen med korrekt antal tekstbokse.
Avatar billede brynil Nybegynder
28. januar 2006 - 11:32 #3
Glem linierne:

    Else
        MsgBox ("Ingen fundet")
Avatar billede mvhansen Nybegynder
28. januar 2006 - 12:23 #4
Hej brynil

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

mvh

mvhansen
Avatar billede mvhansen Nybegynder
28. januar 2006 - 12:36 #5
Hvorfor skal (Public i as long) i et modul

mvh

mvhansen
Avatar billede brynil Nybegynder
28. januar 2006 - 12:49 #6
Prøv at lade være med at selecte:

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.
Avatar billede mvhansen Nybegynder
28. januar 2006 - 13:25 #7
Jeg kan ikke få det til at virke
prøv at se på den
http://www.michael.hansen7500.dk/Excel/Medlemmer.xls

mvh  mvhansen
Avatar billede brynil Nybegynder
28. januar 2006 - 13:42 #8
Denne linie:

  Sheets("Medlemmer").Cells(i, 1).Value

kan ændres til:

  With Sheets("Medlemmer")
      .Cells(i,1).value
  End with

Så slipper du for at skrive de samme parametre igen. Men HUSK de foranstillede punktummer i With sætningen. Ellers anvender du den ikke.
Avatar billede mvhansen Nybegynder
28. januar 2006 - 13:58 #9
Hej brynil

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

mvh

mvhansen
Avatar billede brynil Nybegynder
28. januar 2006 - 14:09 #10
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
Avatar billede brynil Nybegynder
28. januar 2006 - 14:10 #11
Der mangler også et hér foran Cells:

frmParts.txtPart.Text = .Cells(i, 1).Value
Avatar billede brynil Nybegynder
28. januar 2006 - 14:19 #12
Slet indholdet i arket med:

.Cells(i, 1).Value = ""

Jeg synes dog det er sjovt du spørger i betragtning af al den kode du gør tilgængelig på din side. Det er måske ikke noget du selv anvender ?  :))
Avatar billede mvhansen Nybegynder
28. januar 2006 - 14:39 #13
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

mvh

mvhansen
Avatar billede brynil Nybegynder
28. januar 2006 - 14:53 #14
Helt iorden. Det kender jeg selv. Jeg blev bare lidt nysgerrig!

Tilføj Else-linien til koden som vist herunder:

            ....
            txtMailAdresse = .Cells(i, 8).Value
            Exit For
        Else: If i = o Then MsgBox ("Ingen fundet")

        End If
Avatar billede brynil Nybegynder
28. januar 2006 - 14:55 #15
Hov, skal være:

Else: If i = o+1 Then MsgBox ("Ingen fundet")

Du skal jo være kommet forbi rækkerne med data.
Avatar billede brynil Nybegynder
28. januar 2006 - 15:01 #16
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.
Avatar billede mvhansen Nybegynder
28. januar 2006 - 15:20 #17
tak kan man lave så der kommer en msgbox når man er ved at slette
så man kan fortryde sletning inden man gør det alla

Private Sub CommandButton4_Click()
With Sheets("Medlemmer")

If txtPart.Text = ("Text") Then
MsgBox "Du er ved at slette vil du det ", vbYesNo
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 With
End Sub

kan du ikke ligge et svar
som tak for din hjælp

mvh

mvhansen
Avatar billede brynil Nybegynder
28. januar 2006 - 15:52 #18
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
Avatar billede brynil Nybegynder
28. januar 2006 - 15:54 #19
Og i din Else... kode, kan du passende også nulstille tekstboksene for at undgå forvirring.
Avatar billede brynil Nybegynder
28. januar 2006 - 16:01 #20
Og... du bruger Option Explicit, så dim lige a:

Dim Cancel As Boolean
Dim a
Avatar billede mvhansen Nybegynder
28. januar 2006 - 16:14 #21
det er bare fint

mvh

mvhansen
Avatar billede brynil Nybegynder
28. januar 2006 - 16:17 #22
OK, god fornøjelse!
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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