Vraag


Acties:
  • 0 Henk 'm!

  • theorganiser
  • Registratie: Juni 2007
  • Laatst online: 20:17
Hi Heren / dames,

in de categorie durf te vragen :

ik ben bezig een excel sheet te maken ,met VBA
nu loop ik echter tegen het volgende probleem aan.
ik heb een userform gemaakt, met een listbox met daarin maandag t/m zaterdag.
ook een aantal text velden. nu wil ik echter dat als er maandag geselecteerd wordt de 3 text velden worden ingevuld op een bepaalde plek in mijn sheet, echter bij dinsdag moet hij het bij de volgende velden invullen.

onderstaand heb ik nu gedaan maar dat werkt niet.
hij vult het dan overal in

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
If ListBox1 = maandag Then Sheets("kasopmaak").Range("B25").Value = Pin
If ListBox1 = maandag Then Sheets("kasopmaak").Range("C25").Value = debiteuren
If ListBox1 = maandag Then Sheets("kasopmaak").Range("D25,H6").Value = cash
If ListBox1 = dinsdag Then Sheets("kasopmaak").Range("B26").Value = Pin
If ListBox1 = dinsdag Then Sheets("kasopmaak").Range("C26").Value = debiteuren
If ListBox1 = dinsdag Then Sheets("kasopmaak").Range("D26,H6").Value = cash
If ListBox1 = woensdag Then Sheets("kasopmaak").Range("B27").Value = Pin
If ListBox1 = woensdag Then Sheets("kasopmaak").Range("C27").Value = debiteuren
If ListBox1 = woensdag Then Sheets("kasopmaak").Range("D27,H6").Value = cash
If ListBox1 = donderdag Then Sheets("kasopmaak").Range("B28").Value = Pin
If ListBox1 = donderdag Then Sheets("kasopmaak").Range("C28").Value = debiteuren
If ListBox1 = donderdag Then Sheets("kasopmaak").Range("D28,H6").Value = cash
If ListBox1 = vrijdag Then Sheets("kasopmaak").Range("B29").Value = Pin
If ListBox1 = vrijdag Then Sheets("kasopmaak").Range("C29").Value = debiteuren
If ListBox1 = vrijdag Then Sheets("kasopmaak").Range("D29,H6").Value = cash
If ListBox1 = zaterdag Then Sheets("kasopmaak").Range("B30").Value = Pin
If ListBox1 = zaterdag Then Sheets("kasopmaak").Range("C30").Value = debiteuren
If ListBox1 = zaterdag Then Sheets("kasopmaak").Range("D30,H6").Value = cash

[ Voor 0% gewijzigd door F_J_K op 13-03-2018 17:09 . Reden: code tag ]

Beste antwoord (via theorganiser op 22-03-2018 15:19)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

F_J_K schreef op dinsdag 13 maart 2018 @ 17:10:
maar ik mis een vraag, resultaat van debugging, en eigen gedachten?
Dat dus: begin eens met 'option explicit' boven je code te zetten en de compileerproblemen die je dan krijgt op te lossen. Vervolgens kun je met een onderbrekingspunt door je code lopen om precies te zien welke regels worden uitgevoerd en welke niet. Stel je dan de vraag: waarom is dat? Die antwoorden willen we graag zien.
F_J_K schreef op dinsdag 13 maart 2018 @ 17:10:
En ipv viermaal if (..) doe dat eenmaal met een viertal onderliggende acties. Dat leest al een stuk beter.
DAt ook. :)

Zoek eens op het internet naar de syntax van select case op. Of te wel:

Visual Basic:
1
2
3
4
5
6
Select [ Case ] listbox1.value
    Case "zaterdag"
        [ statements ] 
    Case Else  
        [ elsestatements ] ]  
End Select  

[ Voor 31% gewijzigd door Lustucru op 13-03-2018 17:48 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Alle reacties


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Wat is je vraag? Je dumpt code die lijkt te zijn gecopypaste, maar ik mis een vraag, resultaat van debugging, en eigen gedachten?

Algemene opmerking: let op je datatypes. Zijn maandag, Pin, cash etc. gedefinieerde variabelen van een bepaald type?

even als purist:
Wat wil je doen met 'if listbox1 = ...'? Gebruik daar dan .Value. Nu misbruik je IMHO functionaliteit die toevallig wel werkt.. En ipv viermaal if (..) doe dat eenmaal met een viertal onderliggende acties. Dat leest al een stuk beter.

offtopic:
Je hebt bij openen van het topic aangegeven dat het een discussietopic is? Ik maak er alsnog een vraag-topic van.
Ik ben ook zo vrij geweest om ipv. quote, code-tags te gebruiken zodat je code iets leesbaarder is

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • theorganiser
  • Registratie: Juni 2007
  • Laatst online: 20:17
HI ,dankjewel voor je antwoord !

ik ga proberen het zo duidelijk mogelijk te maken :
ik heb een excel sheet met hierin de dagen van de week op veld A25 t/mA30
in veld B25 /C25 /D25 wil ik bij die dag een bepaalde waarden ingevult hebben
als ik in mijn userform uit de listbox maandag selecteer, en hierin dan in de velden (die heb ik pin/debiteuren /cash genoemd) dan moet het bij B25/C25/D25 komen te staan
als ik echter Dinsdag selecteer dan moet het bij B26/C26/D26 komen te staan

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

F_J_K schreef op dinsdag 13 maart 2018 @ 17:10:
maar ik mis een vraag, resultaat van debugging, en eigen gedachten?
Dat dus: begin eens met 'option explicit' boven je code te zetten en de compileerproblemen die je dan krijgt op te lossen. Vervolgens kun je met een onderbrekingspunt door je code lopen om precies te zien welke regels worden uitgevoerd en welke niet. Stel je dan de vraag: waarom is dat? Die antwoorden willen we graag zien.
F_J_K schreef op dinsdag 13 maart 2018 @ 17:10:
En ipv viermaal if (..) doe dat eenmaal met een viertal onderliggende acties. Dat leest al een stuk beter.
DAt ook. :)

Zoek eens op het internet naar de syntax van select case op. Of te wel:

Visual Basic:
1
2
3
4
5
6
Select [ Case ] listbox1.value
    Case "zaterdag"
        [ statements ] 
    Case Else  
        [ elsestatements ] ]  
End Select  

[ Voor 31% gewijzigd door Lustucru op 13-03-2018 17:48 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 07:27
Er van uitgaande dat je je listbox zodanig hebt geconfigureerd dat de gebruiker slechts één entry uit de listbox kan selecteren:

probeer het eens met:
Visual Basic:
1
If ListBox1.Value = "Zaterdag" Then ...


edit: de Select... Case van @Lustucru is hier inderdaad meer geschikt voor. Nu check je altijd elke IF-statement, terwijl dat niet nodig is. Als het Zaterdag is, hoeft hij daarna natuurlijk niet meer te checken of het Maandag is :)

[ Voor 40% gewijzigd door breew op 13-03-2018 17:56 ]


Acties:
  • 0 Henk 'm!

  • theorganiser
  • Registratie: Juni 2007
  • Laatst online: 20:17
het is uiteindelijk gelukt, dank allemaal

ik heb het nu zo staan :
Private Sub CommandButton5_Click()

Select Case ListBox1.Value

Case "maandag"
'
Sheets("kasopmaak").Range("B25") = Pin
Sheets("kasopmaak").Range("C25") = debiteuren
Sheets("kasopmaak").Range("D25") = cash

Case "dinsdag"
'
Sheets("kasopmaak").Range("B26") = Pin
Sheets("kasopmaak").Range("C26") = debiteuren
Sheets("kasopmaak").Range("D26") = cash

Case "woensdag"
'
Sheets("kasopmaak").Range("B27") = Pin
Sheets("kasopmaak").Range("C27") = debiteuren
Sheets("kasopmaak").Range("D27") = cash


Case "donderdag"
'
Sheets("kasopmaak").Range("B28") = Pin
Sheets("kasopmaak").Range("C28") = debiteuren
Sheets("kasopmaak").Range("D28") = cash

Case "vrijdag"
'
Sheets("kasopmaak").Range("B29") = Pin
Sheets("kasopmaak").Range("C29") = debiteuren
Sheets("kasopmaak").Range("D29") = cash

Case "zaterdag"
'
Sheets("kasopmaak").Range("B30") = Pin
Sheets("kasopmaak").Range("C30") = debiteuren
Sheets("kasopmaak").Range("D30") = cash

Case Else
'leave blank!
End Select

End Sub

Acties:
  • 0 Henk 'm!

  • loeberce
  • Registratie: Februari 2009
  • Laatst online: 23-06 16:43
Je kunt zelfs nog overwegen om de waarden Pin, debiteuren en cash een vaste naam te geven die je 1x definieert. Als je dan een van de namen wilt wijzigen hoeft dat maar op 1 plek en niet 7x.
Pagina: 1