Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: zoeken  (gelezen 4551 keer)

0 leden en 1 gast bekijken dit topic.

Offline anneke

  • Nieuw lid
  • Berichten: 1
  • Oplossing.be
zoeken
« Gepost op: 16 augustus 2004, 21:46:40 »
Hallo iedereen,

Ik moet voor mijn eindexamen een examentaak voor informatica maken en ik zit een beetje vast met de oef zoeken. De tabel exporteren naar excel is geen probleem maar daarna moet ik de klantennummer ingeven en dan moet de naam, adres en telefoonnummer getoond worden. En als het klantennummer groter is dan 158 moet er de boodschap komen staan 'het nummer is te groot'. Kan iemand mij hier met helpen?

Dank bij voorbaat
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.189
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re:zoeken
« Reactie #1 Gepost op: 16 augustus 2004, 22:05:06 »
Hallo anneke,

Welkom op onze site. Normaal maken wij geen huiswerk, maar omdat ik zie dat je er toch al zelf aan gewerkt hebt zullen we je toch maar proberen te helpen.

Ik zelf ben niet sterk in Excel, maar ik kan toch al een paar voorbereidende vragen stellen, die noodzakelijk zijn om jou probleem te begrijpen.

Ik veronderstel dat je een macro hebt geschreven, waarin  aan een variabele een waarde (klantnummer) wordt toegekend. Deze waarde wordt dan gebruikt om je excel werkblad aan te vullen. Als je in deze Sub een regel opneemt die er ongeveer zo uitziet:

If klantnummer=>158 Then
Msgbox= "klantnummer is te hoog"; VBOk '(of zo iets)
Else
gosub.... of iets dergelijks
Endif

Heb ik je tenminste op weg geholpen, of zit ik er vierkant naast? :)

SoftAid
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline ceasar

  • Ervaren lid
  • ***
  • Berichten: 293
  • Geslacht: Man
  • de soep eten als ze heet is
Re:zoeken
« Reactie #2 Gepost op: 17 augustus 2004, 22:26:21 »
in vba is sub () en end sub een allesomvattend commando
iets als if en endif. ze hangen onafscheidelijk aan elkaar vast en starten de vba commandos tussen die twee.
hier kan je alle voorwaarden in stoppen die je maar wilt, zolang ze tussen de twee sub's zitten.
Windows 10 Pro   NLD 64bit
Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz 3901
Z77X-UP5 TH-CF
AMD Radeon HD 7900 Series 4095MB 1024 x 768
Realtek High Definition Audio
Nr: 1 Model: WDC WD10 EARX-00N0YB0 SCSI Disk Device
Nr: 2 Model: INTEL SSDSC2CT120A3
C:\ NTFS 111,01GB 1,06GB 32 720MB
AV: Geen antivirus geïnstalleerd
FW: Windows Firewal Enabled: True

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.189
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re:zoeken
« Reactie #3 Gepost op: 17 augustus 2004, 23:25:40 »
in vba is sub () en end sub een allesomvattend commando
iets als if en endif. ze hangen onafscheidelijk aan elkaar vast en starten de vba commandos tussen die twee.
hier kan je alle voorwaarden in stoppen die je maar wilt, zolang ze tussen de twee sub's zitten.

Hallo Ceasar,

Zoals ik reeds zei is mijn kennis van Excel en VBA beperkt, maar met jou uitleg ben ik toch niet tevreden.

binnen een Sub() en een EndSub() kan je kondities scheppen met Loops, If-Else-Or-EndIf, For-To-Next, Goto en andere opdrachten, maar deze kondities moeten wel binnen die opdrachten beschreven zijn. Ik druk mij misschien niet correct uit, maar je weet wel wat ik bedoel, hé... :)

SoftAid
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline powerkite

  • Volledig lid
  • **
  • Berichten: 207
  • Oplossing.be
Re:zoeken
« Reactie #4 Gepost op: 18 augustus 2004, 01:47:48 »
Is het de bedoeling dat dit in excell wordt opgelost of in VBA
in excel zou je een validatie kunnen toepassen op die cel zodat er een foutboodschap komt indien de waarde hoger is dan 158.
Via de functie VertikaalZoeken() (Zie help voor de juiste functie, maar het heeft met database te maken)  kan je vervolgens via het klantnummer de bijhorende waardes opzoeken.

Indien het VBA is, worden de waardes dan in excell-cellen ingegeven? of wordt er met een userform gewerkt?
En hoe moeten de resultaten getoond worden.

Ik wil je gerust verder proberen te helpen.

grtz
Win XP (pro) - Pentium - 2400Mhz - 512Mb - Hercules 9200se - ADSL - Office 2003 Pro

Offline ceasar

  • Ervaren lid
  • ***
  • Berichten: 293
  • Geslacht: Man
  • de soep eten als ze heet is
Re:zoeken
« Reactie #5 Gepost op: 18 augustus 2004, 10:14:41 »
met dit voorbeeld kan je het een en ander aanpassen van veldnamen, condities e.d
sub voorbeeld()
rij = 9
mrij = 6
                                                   
                                                    Do While Sheets("whatever").Cells(rij, 1) <> ""

klantnr1 = Sheets("whatever").Cells(rij, 13)
klantnr2 = Sheets("whatever").Cells(rij + 1, 13)
        If klantnr1 <> klantnr2 And klantnr2 <> 0 Then
                                                   
soort = Sheets("whatever").Cells(rij, 3).Value
center = Sheets("whatever").Cells(rij, 4).Value
faktuurnr = Sheets("whatever").Cells(rij, 13).Value
bedrag = Sheets("whatever").Cells(rij, 14).Value
vervaldatum = Sheets("whatever").Cells(rij, 15).Value
valutadatum = Sheets("whatever").Cells(rij, 24).Value
procent = Sheets("whatever").Cells(rij, 27).Value
Sheets("berekeningen").Cells(mrij, 23).Value = soort
Sheets("berekeningen").Cells(mrij, 22).Value = center
Sheets("berekeningen").Cells(mrij, 24).Value = faktuurnr
Sheets("berekeningen").Cells(mrij, 1).Value = bedrag
Sheets("berekeningen").Cells(mrij, 3).Value = vervaldatum
Sheets("berekeningen").Cells(mrij, 2).Value = valutadatum
Sheets("berekeningen").Cells(mrij, 5).Value = procent / 100000
       
        End If
       
        If klantnr2 = "" And klantnr1 > 0 Then
soort = Sheets("whatever").Cells(rij, 3).Value
center = Sheets("whatever").Cells(rij, 4).Value
faktuurnr = Sheets("whatever").Cells(rij, 13).Value
bedrag = Sheets("whatever").Cells(rij, 14).Value
vervaldatum = Sheets("whatever").Cells(rij, 15).Value
valutadatum = Sheets("whatever").Cells(rij, 24).Value
procent = Sheets("whatever").Cells(rij, 27).Value
Sheets("berekeningen").Cells(mrij, 23).Value = soort
Sheets("berekeningen").Cells(mrij, 22).Value = center
Sheets("berekeningen").Cells(mrij, 24).Value = faktuurnr
Sheets("berekeningen").Cells(mrij, 1).Value = bedrag
Sheets("berekeningen").Cells(mrij, 3).Value = vervaldatum
Sheets("berekeningen").Cells(mrij, 2).Value = valutadatum
Sheets("berekeningen").Cells(mrij, 5).Value = procent / 100000
         
        End If
       
        If klantnr1 = klantnr2 Then
        val1 = Sheets("whatever").Cells(rij, 24)
        val2 = Sheets("whatever").Cells(rij + 1, 24)
       
       
                    Do Until klantnr1 <> klantnr2
        If val2 > val1 Then
       
rij = rij + 1
krednr1 = Sheets("whatever").Cells(rij, 13)
krednr2 = Sheets("whatever").Cells(rij + 1, 13)
val1 = Sheets("whatever").Cells(rij, 24)
val2 = Sheets("whatever").Cells(rij + 1, 24)
        End If
        If klantnr1 = klantnr2 And val2 < val1 Then
        rij = rij + 2
        End If
soort = Sheets("whatever").Cells(rij, 3).Value
center = Sheets("whatever").Cells(rij, 4).Value
faktuurnr = Sheets("whatever").Cells(rij, 13).Value
bedrag = Sheets("whatever").Cells(rij, 14).Value
vervaldatum = Sheets("whatever").Cells(rij, 15).Value
valutadatum = Sheets("whatever").Cells(rij + 1, 24).Value
procent = Sheets("whatever").Cells(rij, 27).Value
Sheets("berekeningen").Cells(mrij, 23).Value = soort
Sheets("berekeningen").Cells(mrij, 22).Value = center
Sheets("berekeningen").Cells(mrij, 24).Value = faktuurnr
Sheets("berekeningen").Cells(mrij, 1).Value = bedrag
Sheets("berekeningen").Cells(mrij, 3).Value = vervaldatum
Sheets("berekeningen").Cells(mrij, 2).Value = valutadatum
Sheets("berekeningen").Cells(mrij, 5).Value = procent / 100000
       
                   
       
Loop


        End If
mrij = mrij + 1
rij = rij + 1


                                                    Loop
End Sub

deze vba macro kan het een en ander, mits aanpassen naar je oefening

geef anders maar seintje  :) ;D >:( ??? 8)
Windows 10 Pro   NLD 64bit
Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz 3901
Z77X-UP5 TH-CF
AMD Radeon HD 7900 Series 4095MB 1024 x 768
Realtek High Definition Audio
Nr: 1 Model: WDC WD10 EARX-00N0YB0 SCSI Disk Device
Nr: 2 Model: INTEL SSDSC2CT120A3
C:\ NTFS 111,01GB 1,06GB 32 720MB
AV: Geen antivirus geïnstalleerd
FW: Windows Firewal Enabled: True

Offline powerkite

  • Volledig lid
  • **
  • Berichten: 207
  • Oplossing.be
Re:zoeken
« Reactie #6 Gepost op: 19 augustus 2004, 02:19:00 »
ceasar, zou je die code even kunnen toelichten. (of hoe de gegevens in je excel-blad staan).
Ik begrijp ook niet waarom je 3 keer dezelfde code gebruikt (normaalgezien schrijf je hier een sub of function voor die je dan meermaals kan oproepen)
grtz
Win XP (pro) - Pentium - 2400Mhz - 512Mb - Hercules 9200se - ADSL - Office 2003 Pro

Offline ceasar

  • Ervaren lid
  • ***
  • Berichten: 293
  • Geslacht: Man
  • de soep eten als ze heet is
Re:zoeken
« Reactie #7 Gepost op: 19 augustus 2004, 13:44:47 »
softaid, powerkite, anneke

in uitleg verschaffen ben ik wel gene krack hoor, maar ik zal proberen om dit een beetje  uit te leggen.

in vba programmeren is:  iets opzetten om nadien een werkblad met gegevens te "laten" verwerken door de macro te laten lopen.

in de excell sheet moet je er van uitgaan dat er gegevens instaan(heb nog niet geprobeerd om met bv access te linken)



het bovenstaande vba program "sub voorbeeld()" gaat in 1 blad "whatever" gaan zoeken.

in dit voorbeeld : naam "rij= 9";

lees eens in de program en je zal zien dat in sheet "whatever" de variabele rij staat, en wat verder in de sheet "berekeningen" de variabele mrij staat.

vervolgens doorloopt het programma of er van  één klant met een nummer in de sheet "whatever" iets staan heeft.

van deze klant gaat het programma vervolgens nog een stap verder: is voor deze klant bv geen dubbele faktuur gemaakt; en als dat is, mag je de eerste faktuur maar nemen.
(de programmalussen tussen if en endif, do while en loop)

vervolgens zullen de gegevens, die het programma selecteert, geplaatst worden op een andere sheet ("berekeningen") (zie mrij = 6).

de cijfertjes die in een bepaalde lijn staan :
klantnr1 = Sheets("whatever").Cells(rij, 13)
hier staat : zoek in kolom 13, op de rij nr : (zie begin = 9), op het blad whatever de nummer van klantnr1.
(zo moet je de commando s in vba LEZEN  ;))

als je nu een excel bestand wil maken waarvoor deze vba zou werken, zal je de naam sheets "... " moeten aanpassen aan de benaming van je sheet in het bestand, de kolom nummer zal je dan ook moeten aanpassen waar de gegevens staan die je nodig hebt.

de vba start je dan op met de alt toets + PF8 toets, je krijgt dan een popup venster waar je de naam van de vba kan aanklikken en dan druk je "uitvoeren" en de vba macro loopt en doet de bewerkingen welke je wil laten doen.

het feit dat je de indruk krijgt dat er meerdere malen hetzelfde ziet staan, is dat de gegevens per lijn gelezen worden, en elke lijn echt uniek wordt in de tweede sheet.

de voorwaarden verschillen dan ook in elke blok !! ;)

hopelijk een ietsje wijzer geworden?


met vriendelijke groeten

JC

 :-[ :) :D
Windows 10 Pro   NLD 64bit
Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz 3901
Z77X-UP5 TH-CF
AMD Radeon HD 7900 Series 4095MB 1024 x 768
Realtek High Definition Audio
Nr: 1 Model: WDC WD10 EARX-00N0YB0 SCSI Disk Device
Nr: 2 Model: INTEL SSDSC2CT120A3
C:\ NTFS 111,01GB 1,06GB 32 720MB
AV: Geen antivirus geïnstalleerd
FW: Windows Firewal Enabled: True

Offline powerkite

  • Volledig lid
  • **
  • Berichten: 207
  • Oplossing.be
Re:zoeken
« Reactie #8 Gepost op: 20 augustus 2004, 00:22:43 »
VBA ken ik goed genoeg, het was gewoon de vraag waarvoor dit programma diende.
Zoekt dit programma naar een bepaalde klant en worden deze gegevens naar een nieuw blad gekopieerd. Dat was  ygelyk mijn vraag: wat was het doel van deze code.
Win XP (pro) - Pentium - 2400Mhz - 512Mb - Hercules 9200se - ADSL - Office 2003 Pro

Offline ceasar

  • Ervaren lid
  • ***
  • Berichten: 293
  • Geslacht: Man
  • de soep eten als ze heet is
Re:zoeken
« Reactie #9 Gepost op: 20 augustus 2004, 07:46:22 »
  :)  powerkite,

antwoord is ja !

 :)   anneke,

hopelijk gaat het goed met je eindexamen.


in elk geval, ik voel me ineens 30 jaar jonger.

met vriendelijke groeten

JC
Windows 10 Pro   NLD 64bit
Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz 3901
Z77X-UP5 TH-CF
AMD Radeon HD 7900 Series 4095MB 1024 x 768
Realtek High Definition Audio
Nr: 1 Model: WDC WD10 EARX-00N0YB0 SCSI Disk Device
Nr: 2 Model: INTEL SSDSC2CT120A3
C:\ NTFS 111,01GB 1,06GB 32 720MB
AV: Geen antivirus geïnstalleerd
FW: Windows Firewal Enabled: True

 


www.combell.com