Toon posts:

[VBA] probleem met combobox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet voor informatica een praktische opdracht maken in VBA in m$ word dmv van macro's etc.. OK. Ik heb besloten om een soort pc shop te maken waarbij je zelf je onderdelen kan samenstellen. het is nog in alpha stage ;)
Wat ik nu heb zijn 2 comboboxes.
-ComboBox1 = Onderdelen. Hierin krijg je een lijst onderdelen die veranderd kan worden door het bestand "Onderdelen.txt" aan te passen.
- Kies je een onderdeel, dan krijg je in ComboBox2 alle beschikbare onderdelen.
Het volgende 'proffesionele' schema maakt het duidelijker :+

[afbeelding]

Als je nu een onderdeel van ComboBox2 kiest, krijg je de 1.Naam, 2.Beschrijving en 3.Prijs in Textboxen 1, 2 en 3. Ik doe dit allemaal met txt bestanden. Een stukie code:

Private Sub ComboBox2_Change()

i = ComboBox2.ListIndex + 1
Select Case i
Case 1
Open "C:\PO Informatica\CD-ROM_DVD-ROM.txt" For Input As #111
Do While Not EOF(111)
Input #111, r$, s$, t$
TextBox3 = r$
TextBox1 = s$
TextBox2 = t$
Loop
Close #111

Wat er nu gebeurd is (zie schema hiervoor) dat als ik bv het onderdeel CD-ROM kies krijg ik wel alle beschikbare modellen (A1, 2, 3 etc) . Als ik op de eerste klik, krijg ik ook 1.de beschrijving van het verkeerde model, nl. de laatste in de lijst! en niet de eerste. Klik ik nu weer op een ander onderdeel bv. KABEL, dan krijg ik de beschikbare modellen in ComboBox2. Maar als ik op een van de modellen klik, krijg ik het eerste! model van CD-ROM! en niet van KABEL. Wat ik ook doe, ik kan het niet goed krijgen. Ik kan geen *.dot bestanden uploaden op mijn homepage, maar ik heb ff de code in txt bestanden gezet en alles geupload. Wie o wie kan helpen _/-\o_ ? We werken alleen met stencils op school en dit staat er niet in :(

Code: http://home.planet.nl/~hart0480/Code.txt
Om dit te laten werken heb je de volgende txt bestanden nodig:
Onderdelen.txt : http://home.planet.nl/~hart0480/Onderdelen.txt
CD-ROM_DVD-ROM.txt: http://home.planet.nl/~hart0480/CD-ROM_DVD-ROM.txt
Kabels.txt : http://home.planet.nl/~hart0480/Kabels.txt
Scanner.txt : http://home.planet.nl/~hart0480/Scanner.txt
Voeding.txt : http://home.planet.nl/~hart0480/Voeding.txt

Ik hoop dat dit misschien een beetje duidelijk is 8)7
alvast bedankt

  • elf
  • Registratie: December 2001
  • Laatst online: 20-05-2025

elf

Als ik het goed begrijp dan.....

....gaat het tonen van de modellen wel goed

...maar het tonen van de beschrijving gaat fout

toch?

  • Bu588
  • Registratie: Maart 2000
  • Laatst online: 22-12-2025
offtopic:
Waarom doe je dat niet met Access in plaats van Word? Dat werkt veel makkelijker en betrouwbaarder volgens mij.... Word is hier totaal niet voor bedoeld, en Access juist wel.

Nothing is fool-proof to a sufficiently talented fool...


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Je geeft aan dat de gegevens van 't laatste item weergegeven worden als je iets kiest in de combobox. Kijk eens heel goed naar deze regels code (komen van jouw code af!)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub ComboBox2_Change()
i = ComboBox2.ListIndex + 1
Select Case i
    Case 1
      Open "C:\PO Informatica\CD-ROM_DVD-ROM.txt" For Input As #111
      Do While Not EOF(111)
      Input #111, r$, s$, t$
      TextBox3 = r$
      TextBox1 = s$
      TextBox2 = t$
    Loop
    Close #111
    Case 2
      Open "C:\PO Informatica\Kabels.txt" For Input As #112
      Do While Not EOF(112)
      Input #112, r$, s$
      TextBox3 = r$
      TextBox1 = s$
      'TextBox2 = t$
    Loop
    Close #112
    <...knip...>
  End Select
Hiermee zeg je dus dat je tot aan het eind van het bestand loopt en de waardes in het tekstveld zet. Tot aan de laatste regel van het bestand dus. TOT AAN DE LAATSTE REGEL. Get it? ;)

My personal website


Verwijderd

Topicstarter
OH ja........... hehe ok ik ga dat ff fixen en kijken wat er dan verder gebeurt.

  • steenz
  • Registratie: Oktober 2000
  • Laatst online: 21-09-2024
Het is trouwens misschien wel een ideetje om doevents commando's in je loopjes te zetten. Maakt in dit geval niet veel uit, maar als je ooit langere loopjes krijgt... (zorgt ervoor dat andere events ertussen kunnen komen).

Maar verder lijkt het probleem alweer opgelost :) (heb dus ook code niet goed gelezen :))

Verwijderd

Topicstarter
Oke ik zit weer een beetje te werken aan dit. Probleem 1 (dat de laatste regel genomen wordt) is opgelost. Misschien op een beetje ingewikkelde manier, maar ja. Maar probleem 2 (Als ik iets selecteer uit comboBox2, pakt hij het van de verkeerde file). NOu het zal wel aan de code zitten. Dit is wat ik heb gedaan nu :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 Private Sub ComboBox2_Change()

I = ComboBox2.ListIndex + 1
Select Case I
    
    Case 1
    f = ComboBox2.ListIndex
    ff = -1
    Open "C:\PO Informatica\CD-ROM_DVD-ROM.txt" For Input As #111
    Do While Not EOF(111)
    Input #111, r$, s$, t$
    ff = ff + 1
    If ff = f Then Exit Do
    Loop
    Close #111
    TextBox3 = r$
    TextBox1 = s$
    TextBox2 = t$
    Case 2
    f = ComboBox2.ListIndex
    ff = -1
    Open "C:\PO Informatica\Kabels.txt" For Input As #112
    Do While Not EOF(112)
    Input #112, r$, s$
    ff = ff + 1
    If ff = f Then Exit Do
    Loop
    Close #112
    TextBox3 = r$
    TextBox1 = s$
    'TextBox2 = t$
    
    Case 3
    f = ComboBox2.ListIndex
    ff = -1
    Open "C:\PO Informatica\Scanner.txt" For Input As #113
    Do While Not EOF(113)
    Input #113, r$, s$
    ff = ff + 1
    If ff = f Then Exit Do
    Loop
    Close #113
    TextBox3 = r$
    TextBox1 = s$
    'TextBox2 = t$
    Case 4
    f = ComboBox2.ListIndex
    ff = -1
    Open "C:\PO Informatica\Voeding.txt" For Input As #114
    Do While Not EOF(114)
    Input #114, r$, s$
    ff = ff + 1
    If ff = f Then Exit Do
    Loop
    Close #114
    TextBox3 = r$
    TextBox1 = s$
    'TextBox2 = t$
   
   
    End Select

    
    
End Sub


Ter illustratie:
http://home.planet.nl/~hart0480/Keuze1.GIF
http://home.planet.nl/~hart0480/Keuze2.GIF

Any1 can help? :+

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 21:03

NetForce1

(inspiratie == 0) -> true

Waarom doe je dit: I = ComboBox2.ListIndex + 1 ? Kijk eerst even wat ListIndex precies teruggeeft.
En je hebt ook wel een beetje overbodig typwerk gedaan ;)
Je kunt IMO beter binnen het CASE-statement een variabele 'file' oid laten vullen met een bestandsnaam, en die na het CASE-statement uitlezen.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
NetForce1 schreef op 10 februari 2003 @ 16:18:
Waarom doe je dit: I = ComboBox2.ListIndex + 1 ? Kijk eerst even wat ListIndex precies teruggeeft.
En je hebt ook wel een beetje overbodig typwerk gedaan ;)
Je kunt IMO beter binnen het CASE-statement een variabele 'file' oid laten vullen met een bestandsnaam, en die na het CASE-statement uitlezen.
I = ComboBox2.ListIndex + 1 ? Omdat ik bij Case 1 begin. Standaar staat ie op Case 0. Dus 0+1=1 . beetje overbodig eigenlijk maar ja.
Dat die code zo lang en ingewikkeld is: n00b :+ . Wat bedoel je eigenlijk met
Je kunt IMO beter binnen het CASE-statement een variabele 'file' oid laten vullen met een bestandsnaam, en die na het CASE-statement uitlezen
Ik snap er niks van :)
Oh ja. weet iemand hoe ik een steeds een regel laat overlsaan bij het inlezen van een txtbestand. Dus dat ie bij regel 1 begint, daarna 3,5 7 etc..

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 21:03

NetForce1

(inspiratie == 0) -> true

Verwijderd schreef op 10 February 2003 @ 17:10:
[...]


I = ComboBox2.ListIndex + 1 ? Omdat ik bij Case 1 begin. Standaar staat ie op Case 0. Dus 0+1=1 . beetje overbodig eigenlijk maar ja.
Ok, beetje dom van mij :X
Dat die code zo lang en ingewikkeld is: n00b :+ . Wat bedoel je eigenlijk met

[...]

Ik snap er niks van :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub ComboBox2_Change() 
I = ComboBox2.ListIndex + 1 

Select Case I
Case 1
  file = "Bestand1"
Case 2
  file = "Bestand2"
End Select

open file for input as #1
'doe wat met file
Oh ja. weet iemand hoe ik een steeds een regel laat overlsaan bij het inlezen van een txtbestand. Dus dat ie bij regel 1 begint, daarna 3,5 7 etc..
Wat denk je van een regel inlezen en daar vervolgens niets mee doen?

code:
1
2
3
4
5
6
input #1, regel1
'doe iets met regel1
input #1, regel2
'doe niets met regel2
input #1, regel3
'doe iets met regel3

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"

Pagina: 1