[VB6] if else probleem

Pagina: 1
Acties:

  • sarinsarin
  • Registratie: December 2004
  • Laatst online: 20-12-2025
Hoi ,
ik heb een probleem met de else if statement.
Mijn code ziet er als volgt uit:
code:
1
2
3
4
    If Subtotaal = 0 Then
    GoTo Line5
    Else: MsgBox "Dit zijn de gegevens van Gabor"
    End If

Het probleem nu is, dat ook wanneer Subtotaal niet 0 is, de MsgBox alsnog wordt overgeslagen

[ Voor 17% gewijzigd door sarinsarin op 24-03-2005 16:45 ]


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

1: Vermijd het gebruik van goto.
2: Je kijkt nu of Subtotaal gelijk is aan de tekst/string 0, terwijl je waarschijnlijk wilt vergelijken met een getal.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

code:
1
2
3
4
5
If (voorwaarde) then
  msgbox "Voorwaarde OK"
Else
  msgbox "Voorwaarde NIET OK"
End If

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10:05

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
:'( :'(
zelfs

https://fgheysels.github.io/


  • sarinsarin
  • Registratie: December 2004
  • Laatst online: 20-12-2025
If (voorwaarde) then

de () maakten het verschil :)

Ik begrijp dat mensen hier niet gecharmeerd zijn van mijn GoTo statement.....

Wat zou dan het beste alternatief zijn?

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

De code bij je Line5 in een procedure zetten en die aanroepen, bijvoorbeeld.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 08-05 07:49

TwoR

Gekleurde stippen

en die nul als dat een integer moet zijn de " " er omheen weghalen. Die moeten namelijk alleen bij een string.

  • sarinsarin
  • Registratie: December 2004
  • Laatst online: 20-12-2025
code:
1
2
3
4
5
    If (Subtotaal = 0) Then
    GoTo Line5
    Else
    MsgBox "Dit zijn de gegevens van Gabor"
    End If


o nee, toch niet goed, hij slaat nog steeds alle Msgboxes over ook wanneer subtotaal niet o is

(ps: met Goto line 5 bedoel ik dus naar elders in mijn script, niet naar regel 5)

[ Voor 28% gewijzigd door sarinsarin op 24-03-2005 17:15 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
Wat staat dat dubbelpunt na die else te doen ?
En , get rid of the goto.

https://fgheysels.github.io/


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Visual Basic:
1
2
3
if (subtotaal<>0)
   MsgBox "Dit zijn de gegevens van Gabor"
End if



:+

  • whoami
  • Registratie: December 2000
  • Laatst online: 09-05 01:02
Erg eigenlijk.....
Mensen die geen voorwaarde kunnen omdraaien.

Hier wandelt er ook zo code ronde:
if voorwaarde
then // do niets
else
......
......

https://fgheysels.github.io/


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

D4Skunk schreef op donderdag 24 maart 2005 @ 17:10:
Visual Basic:
1
2
3
if (subtotaal<>0) THEN
   MsgBox "Dit zijn de gegevens van Gabor"
End if



:+
THEN is verplicht in vb, ik ben meer een c# programmeur. :z
Wat ik dus bedoelde met die post, is dat waarschijnlijk die goto niet nodig is....

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10:05
D4Skunk schreef op donderdag 24 maart 2005 @ 17:20:
THEN is verplicht in vb, ik ben meer een c# programmeur. :z
Wat ik dus bedoelde met die post, is dat waarschijnlijk die goto niet nodig is....
zeker weten niet nodig is :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • jan-marten
  • Registratie: September 2000
  • Laatst online: 27-04 16:48
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdGotoTest_Click()
    Dim i As Integer
    i = 1 'kan ook 0 zijn oid
    If i = 0 Then
        GoTo cmdGotoTest_line
    Else: MsgBox "hoi"
    End If
    MsgBox "geen GoTo uitgevoerd"
    Exit Sub
cmdGotoTest_line:
    MsgBox "GoTo uitgevoerd"
End Sub

Werkt gewoon.

  • Twee Dee
  • Registratie: Juli 2002
  • Laatst online: 12:36

Twee Dee

Morgen weer een ondertitel.

Visual Basic:
1
If clng(Subtotaal) = 0 Then

Mocht dit je probleem oplossen, dan raad ik je aan wat onderzoek te doen naar het declareren van variabelen en hoe je om moet gaan met verschillende datatypes. (string/integer/etc.)

Luister nou gewoon naar me, dat voorkomt dat ik later "zie je wel" moet zeggen.


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

farlane schreef op donderdag 24 maart 2005 @ 19:36:
[...]


zeker weten niet nodig is :)
Goto moet/mag je eigenlijk alleen gebruiken (in VB(script) dan) in combinatie met foutafhandeling,

Visual Basic:
1
2
3
4
5
6
7
Sub xxxx
   On Error Goto ErrorHandler
   ...
   Exit Sub
ErrorHandler:
   MsgBox "FOUT!"
End Sub

In (vrijwel) alle andere gevallen zul je je code zo moeten maken dat het niet nodig is.

Verwijderd

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Private Sub Command1_Click()
 Subtotaal = 1 '0 '"blaat"
 If Subtotaal = 0 Then
     GoTo Line5
    Else: MsgBox "Dit zijn de gegevens van Gabor"
 End If
Exit Sub

Line5:
MsgBox "line5 test"
End Sub

En die Subtotaal nog ff dimmen ofzo met byte/integer/whatever nodig is.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10:05
Wat zitten jullie nou nog steeds te k*tten met die goto? Is het bericht nog niet overgekomen?

Visual Basic:
1
2
3
4
5
6
7
8
Private Sub Command1_Click() 
 Subtotaal = 1 '0 '"blaat" 
 If Subtotaal <> 0 Then 
    MsgBox "Dit zijn de gegevens van Gabor" 
 Else
    MsgBox "line5 test" 
 End If 
End Sub

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lukse
  • Registratie: Januari 2004
  • Laatst online: 12-04-2023
farlane schreef op vrijdag 25 maart 2005 @ 13:01:
Wat zitten jullie nou nog steeds te k*tten met die goto? Is het bericht nog niet overgekomen?
Wat zitten jullie nou nog steeds te k*tten met die if-then-else???
Waar zit hier die moderator? :)

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 09-05 23:03
if (subTotaal == 0)

(Of bestaat dit niet in VB :?)

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 07-05 15:06

sopsop

[v] [;,,;] [v]

Rowwan schreef op vrijdag 25 maart 2005 @ 14:34:
if (subTotaal == 0)

(Of bestaat dit niet in VB :?)
Nee. Vergelijkingen gewoon met enkele =

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 10:05
Lukse schreef op vrijdag 25 maart 2005 @ 13:23:
[...]

Wat zitten jullie nou nog steeds te k*tten met die if-then-else???
Waar zit hier die moderator? :)
Ook weer waar :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lukse
  • Registratie: Januari 2004
  • Laatst online: 12-04-2023
boppert schreef op vrijdag 25 maart 2005 @ 14:35:
[...]

Nee. Vergelijkingen gewoon met enkele =
En die haakjes zijn ook niet nodig. :O

Verwijderd

farlane schreef op vrijdag 25 maart 2005 @ 13:01:
Wat zitten jullie nou nog steeds te k*tten met die goto? Is het bericht nog niet overgekomen?
Mja er zijn zoveel mogelijkheden dat is het leuke he ;)

Weet niet direct zo een voorbeeld maar ik kan me herinneren dat ik weleens een goto heb gebruikt om het feit dat het een stuk makkelijker was een 'probleem' op te lossen dan de zogenaamde 'nette' manier :P sue me ;)

[ Voor 4% gewijzigd door Verwijderd op 25-03-2005 15:27 ]


Verwijderd

Hoi mensen,

Ik zit nog steeds met dit probleem. (Een vriend had hiervoor voor mij ingelogt, vandaar dat ik het nu met m'n eigen code doe)
Ik weet inmiddels dat de GoTo statement niet gelieft is, maar ik ben nog een beginner. Dus die haal ik weg zodra ik iets meer ervaring heb.
Nu is mijn bedoeling dat zodra de waarde "subtotaal" gelijk is aan 0, dat de macro dan naar de volgende line gaat. Echter laat hij de msgbox gewoon zien. Zit het 'm misschien in de Dim?
Subtotaal is dus een waardie die telkens verschillend is. Can somebody help me??

Sub Inbound()

Dim Subtotaal
Subtotaal = Range("D255")

Line1:
Worksheets("Behoud Lijst").Range("A:D").AutoFilter _
Field:=1, _
Criteria1:="39302"
If Subtotaal = 0 Then
GoTo Line2
Else: MsgBox "Dit zijn de gegevens van Marloes Evers"
End If

Edit:
Ik heb het al opgelost. Ik had DIM subtotaal, maar het had Set moeten zijn 8)7
Tnx anyway

[ Voor 18% gewijzigd door Verwijderd op 28-03-2005 12:19 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08-05 11:55

mulder

ik spuug op het trottoir

Misschien heel simpel gedacht hoor, maar het lijkt me dat Subtotaal in iedergeval geen 0 is. Het woord Range zelf geeft al aan dit object niet perse 1 waarde hoeft te zijn/hebben.

oogjes open, snaveltjes dicht


Verwijderd

Tja, ik ben nog maar net een tijdje begonnen me VB, dus vandaar mijn beperkte ervaring.
Als het goed is, krijg ik deze week een beginners-boek.
Tot die tijd moet ik het maar met Help en Google doen.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Excel he? Zal ik ook nog eens een duit in het zakje doen? :P

A: De variabele subtotaal krijgt één keer een waarde toegewezen in regel 3 en die houdt ie gewoon verder. Wat je ook verder doet in je code, de waarde van range("D255") verandert misschien, maar de waarde van subtotaal niet.

B: Subtotaal is dus niet 0. Wat kan het wel zijn? Leeg (Null), een lege string (""), een getalswaarde <>0 of een willekeurige string (bv "0").

C: wil je dat subtotaal verwijst naar de range("D255") dan gaat het als volgt:

Dim subtotaal as range
Set subttotaal=activesheet.range("D255").range
if subtotaal.value <> 0 then msgbox

of vergeet subtotaal:
If range("D255")<>0 then

D: Kijk eens naar procedures in de helpfile.

[ Voor 10% gewijzigd door Lustucru op 28-03-2005 12:27 ]

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


  • Stiegl
  • Registratie: Mei 2004
  • Laatst online: 26-03 10:59
We kunnen met z'n allen natuurlijk wel gaan gissen wat het probleem bij de heren VB-newbie's is, maar het lijkt mij zinvoller om de debug basics onder de knie te krijgen:
Zet een breakpoint op de regel waar je niet zeker van bent --> op code regel gaan staan, druk F9. Laat de code runnnen, totdat hij op het breakpoint stop, en stap door de coderegels met F8. Gebruik het locals window, of het watch window om de waarden van variabelen te bekijken.
Je zult vrij snel zien waar de fout zit.

Uit onderzoek is gebleken dat 85% van alle statistieken niet klopt


Verwijderd

Aha, kijk dat zijn eens goede tips Cheese :) Tnx alot
En idd Niesje, zo kan het ook. 't is alleen dat ik NOG niet zo ervaren ben. ;)
Maar die code ziet er stukken beter uit _/-\o_

Heb je misschien ook nog een oplossing voor mij om die GoTo te vervangen door iets anders??

  • sebastius
  • Registratie: September 2000
  • Laatst online: 05:57

sebastius

Laten we lekker link gaan doen

gewoon de code die je 'GoTo'd inbouwen in de IF THEN ELSE structuur, of er een sub van maken.
Pagina: 1