Avatar billede lillehans Nybegynder
01. november 2001 - 12:45 Der er 6 kommentarer og
1 løsning

Arrays returnere nr ved indtastning af navn i inputbox

Jeg har følgende:
Dim personnavn(3) as string
dim navnid as integer

Når jeg ønsker at få returneret et navn på grundlag
af et indtastet nr. i inputboxen fungerer følgende:
Private Sub CommandButton1_Click()
navnid = InputBox(\"Vis navnet på nr. \")
MsgBox \"Navn nr. \" & navnid & \"er \" & personnavn(navnid)
End Sub
Problem:
Når jeg på grundlag af et indtastet navn i inputboxen
ønsker at få returneret nummeret på personnavnet går
det galt.
Hvem gider at hjælpe?
Avatar billede jelzin101 Praktikant
01. november 2001 - 13:04 #1
Dim personnavn(3) As String
Dim navnid As Variant
Private Sub Command1_Click()
navnid = InputBox(\"Vis navnet på nr. \")
If IsNumeric(navnid) Then
MsgBox \"Navn nr. \" & navnid & \" er \" & personnavn(navnid)
Else
For i = 0 To UBound(personnavn)
  If InStr(navnid, personnavn(i)) Then
MsgBox \"Navnet \" & personnavn(i) & \" har \" & \" id \" & i
  End If
Next i
End If
End Sub

Private Sub Form_Load()
personnavn(0) = \"hanseline\"
personnavn(1) = \"bent\"
personnavn(2) = \"hans\"
personnavn(3) = \"bente\"
End Sub
Avatar billede lillehans Nybegynder
01. november 2001 - 13:44 #2
Nu har du vist slået to fluer med ét smæk. Det
er vel også derfor, du har ændret dim\'en til variant?
Når jeg taster nummeret ind, får jeg straks navnet, men når jeg taster navnet ind, får jeg
først en meddelse: \"Navnet har ID 0\". Hvordan
undgår jeg denne meddelelse.
Hvad betyder inStr? Hvad betyder Ubound?
Jeg har givet dig ekstra point i håb om at du så
gider forklare mig ovenstående som tillæg.
OK?
Avatar billede jelzin101 Praktikant
01. november 2001 - 13:49 #3
ok :)

inStr:
det betyder at den tjekker om (a,b) a kan findes i b, f.eks. a= \"to\"  og b = \"beggeto\" giver et positivt resultat.

variant: jeps variant fylder lidt mere i hukommelsen men til gengæld kan man smide i den næsten hvad det skal være...

Ubound>> betyder \"upper - boundary\" -altså øvre grænse, den satte jeg for at man nemt kunne ændre antallet af personer, den tager bare antallet af \"indgange\" i det array.

-den dér med id 0 ved jeg ikke heeelt hvorfor, men kigger lige på det.
Avatar billede lillehans Nybegynder
01. november 2001 - 15:08 #4
>Jelzin101
Desværre har jeg ikke forstået det endnu.
Gider du at se på hele min kode.
Kan du uden al det rafinerede blot udfylde den
sidste del for mig uden at forlade mine variabler
og primitive måde? Du skal få ekstra point ved
en anden lejlighed. Tak!

Option Explicit
Dim personnavn(3) As String
Dim navnid As Integer

Private Sub cmdIndlaes_Click()
For navnid = 1 To 3
    personnavn(navnid) = InputBox(\"skriv et navn, navn nr.: \" & navnid)
    Next
   
End Sub

Private Sub cmdvis_Click()
For navnid = 1 To 3
    MsgBox \"Navn nr. \" & navnid & \"er \" & personnavn(navnid)
    Next
   
End Sub

Private Sub CommandButton1_Click()
navnid = InputBox(\"Vis navnet på nr. \")
MsgBox \"Navn nr. \" & navnid & \"er \" & personnavn(navnid)

End Sub

Private Sub CommandButton2_Click()
? = inputbox(\"Vis nummeret på navn \")
MsgBox \"Nummeret på navn er \" & navnnummer

Avatar billede jelzin101 Praktikant
01. november 2001 - 20:23 #5
sagtens :)
Option Explicit
Dim personnavn(3) As String
Dim navnid, navnnummer As Integer
Dim navn, besked As String

Private Sub cmdIndlaes_Click()
For navnid = 1 To 3
    personnavn(navnid) = InputBox(\"skriv et navn, navn nr.: \" & navnid)
Next navnid
   
End Sub

Private Sub cmdvis_Click()
For navnid = 1 To 3
    MsgBox \"Navn nr. \" & navnid & \"er \" & personnavn(navnid)
Next navnid
   
End Sub

Private Sub CommandButton1_Click()
navnid = InputBox(\"Vis navnet på nr. \")
MsgBox \"Navn nr. \" & navnid & \"er \" & personnavn(navnid)

End Sub

Private Sub CommandButton2_Click()
navn = InputBox(\"Vis nummeret på navn \")
navnnummer = -50  \'den bliver sat for at man kan tjekke om navnet ikke eksisterer

For navnid = 1 To 3
  If InStr(navn, personnavn(navnid)) Then \' hvis \"navn\" findes i \"personnavn\" nr. navnid
      navnnummer = navnid \' bliver navnnummer sat til at være den navnid der passer til
  End If
Next navnid

If navnnummer = -50 Then  \' hvis der ikke er fundet et navn er den jo stadig -50
    besked = \"navnet du søgte fandtes ikke\" \' istedet for 2 msg bla bla bla laver vi det i en streng
  Else
    besked = \"Nummeret på navn er \" & navnnummer \' samme som ovenstående
   
End If

MsgBox besked \'her bruger vi så den besked vi har lavet lige ovenover
End Sub

Avatar billede lillehans Nybegynder
02. november 2001 - 14:18 #6
Tak, Jelzin. Det fungerer, og måske forstår jeg
det om nogen tid. Jeg husker det med pointene!
Avatar billede jelzin101 Praktikant
02. november 2001 - 17:55 #7
:) hvis du ikke forstår det hele skal du bare spørge - så svarer jeg (engang efter weekenden....)
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