Avatar billede slapstick Nybegynder
16. april 2003 - 19:48 Der er 13 kommentarer og
1 løsning

subscript out of range

hvorfor får jeg en subscript out of range her?

k = lstRcp.ListCount - 1
ReDim addys(k)
For o = 0 To k
addys(o) = lstRcp.List(o)
o = o + 1
Next o
Avatar billede shadowdance Nybegynder
16. april 2003 - 19:53 #1
Fejlen er, at du skriver:

o=o+1

Det behøver du ikke (bør ikke, jeg ved faktisk ikke hvad konsekvensen er ved at gøre det).

Idet du skriver:

for o=0 to k

lægger den automatisk en til hver gang.
Avatar billede slapstick Nybegynder
16. april 2003 - 19:57 #2
det har jeg fjernet igen nu men den siger det stadig væk
Avatar billede joern Nybegynder
16. april 2003 - 20:13 #3
Hej.

Listcount - 1  anvendes fordi 'listcount' indeholder antallet af poster i listen, mens 'listindex' starter ved nul.

Når du dynamisk tildeler dit array størrelse som beskrevet, skal du ikke trække 1 fra listcount.  I øvrigt betyder det normalt ikke noget at et array har lidt ekstra ubenyttede variable.

Men der er en anden fejl, mener jeg.  Der skal da ikke stå lstRcp.List(o) men lstRcp.text (o).

Hvad vil du i øvrigt opnå ved at indlæse listens poster i et array?  Posterne står jo i forvejen i hukommelsen i en slags array, når de står i listen!

M.v.h. Jørn
Avatar billede slapstick Nybegynder
16. april 2003 - 20:19 #4
ok nu ser den sådan her ud
    Dim o As Long
    Dim k As Long
    k = lstRcp.ListCount
    For o = 0 To k
    addys(o) = lstRcp.Text(o)
    Next
og giver den her fejl
Wrong number of arguments or invalid property assignment
og så highlighter den .Text i lstRcp.text
Avatar billede slapstick Nybegynder
16. april 2003 - 21:01 #5
men ok hvis de allerede er i array så ka jeg godt se det her er åndssvagt
men hvordan får jeg så dataen ud af listbox aray'et?
den siger fejl med listbox.text(1) feks
Avatar billede joern Nybegynder
16. april 2003 - 21:54 #6
Hej.

Jeg plejer at indstille listens indeks på den post jeg vil se (kopiere til felter f.eks.)

Hvis det det drejer ig om at løbe en liste igennem ved en fritekst-søgning skriver jeg således:

Du indtaster nogle tegn i et søgefelt 'txtsog' og trykker 'enter'  (du kan også vælge at det skal være dobbeltklik eller tryk på en knap der starter søgningen).

Private Sub txtsog_KeyPress(KeyAscii As Integer)

  If Len(txtsog.text)= 0 Then Exit Sub
  For a = 0 to list1.listcount -1
      list1.listindex = a
      If instr(list1.text,txtsog.text)> 0 then list2.AddItem list1.text
  Next a

End Sub

Der er mange variationsmuligheder, du kan søge direkte i din fil og tilføje matchende poster til en liste, det afhænger jo af hvor data dannes eller læses fra.  I mit eksempel tilføjes de som passer til søge-kritereiet til en liste to.

Hjælper dette dig ikke må du oplyse lidt mere om formål i din gennemløbning af en liste.

Det skal nævnes at i win98 løber en liste langsomt når antialiasing er aktiv (default) så kan man gøre listen 'Visible = False' mens der søges og gøre den synlig når søgningen er færdig.

M.v.h.  Jørn
Avatar billede slapstick Nybegynder
16. april 2003 - 22:15 #7
hmm det jeg ville var at hive dataen ud ikke adde den hehe
jeg skal ha indholdet af hvert item i min listbox
Avatar billede joern Nybegynder
16. april 2003 - 22:23 #8
Hej.

Så er det uklart for mig hvad der skal foregå!

Mener du at poster der klikkes på skal slettes fra listen?
Mener du at hver post repræsenterer en række data?
Hvad mener du?

Det er forhåbenlig klart for dig, men din beskrivelse er utilstrækkelig for mig ser du nok.

Du hører ikke mere fra mig idag, jeg står af nu.

M.v.h.  Jørn.
Avatar billede slapstick Nybegynder
16. april 2003 - 22:30 #9
hehe ok jeg pensler lige en gang så

jeg har læst en masse navne ind fra en tekstfil ind i en listbox
de navne skal jeg så lave et database check med
allesammen men et navn ad gangen
dvs jeg skal have navnene ud fra den listbox igen og så ned i min db funktion
uden at selecte nogle af dem hvis det er muligt
så den bare tager allesammen fra en ende af
Avatar billede joern Nybegynder
17. april 2003 - 09:26 #10
Hej igen, godmorgen.

Du har en tekstfil med nogle navne - adskilt af CRLF ? - det jeg kalder poster.
Du har en - access? - database hvor der er navne i en af tabellerne?

Du vil undersøge om alle navne forekommer i databasen.

Hvad skal der ske hvis der er navne i databasen der ikke er i tekstfilen og - hvad skal der ske hvis der er navne i tekstfilen, der ikke forekommer i databasen.

For mig at se er listen uinteressant, du kan læse første post i din fil og udføre sammenligningen.  Hvis navnet forekommer så skal det måske tilføjes en listeboks for nærmere inspektion, eller?

Nu er det påske og solskin, så måske skulle vi lave noget andet end VB.

M.v.h.  Jørn
Avatar billede sjh Nybegynder
17. april 2003 - 13:58 #11
Prøv at intaste koden på en form og se om de ikke virker.

'------------------------------- Form1 -------------------------------
Option Explicit

Private Sub Command1_Click()
Dim i, j As Long
Dim addys() As String

  j = lstRcp.ListCount - 1
  ReDim addys(j) As String

  For i = 0 To j
    addys(i) = CStr(lstRcp.List(i))
  Next i
 
  MsgBox "Der er fra " & LBound(addys()) & " til " & UBound(addys()) & " i addys()"

  For i = LBound(addys()) To UBound(addys())
    MsgBox "addys(" & i & ") = " & addys(i)
  Next i
End Sub

Private Sub Form_Load()
  With lstRcp
      .AddItem "Abe"
      .AddItem "Mus"
      .AddItem "Hus"
      .AddItem "Løve"
      .AddItem "Elefant"
      .AddItem "Slange"
  End With
End Sub
'------------------------------- Form1 -------------------------------
Avatar billede slapstick Nybegynder
18. april 2003 - 00:11 #12
smukt shj det spiller bare :))
Avatar billede sjh Nybegynder
18. april 2003 - 00:23 #13
sjh tak, og ikke shj ;-)
Avatar billede slapstick Nybegynder
18. april 2003 - 19:13 #14
ah ja sorry hehehe :)
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