foutmelding "er wordt een sub, function of property verwacht"

Status
Niet open voor verdere reacties.
Je kan nog eens naar ElseIf kijken...
Code:
    Do While Rng.Offset(0, -3) = True
        If Rng.Offset(0, -1) <= 11 Then
            Rng = blauw1
        ElseIf Rng.Offset(0, -1) <= 22 Then
            Rng = blauw2
        ElseIf Rng.Offset(0, -1) <= 32 Then
            Rng = blauw3
...
        Else
            Rng = blauw15
        End If
    Loop
Het kan nog veel korter als je arrays gebruikt. Die variant ben ik nog aan het uitwerken, maar jullie geven wel heel snel op :).
 
Ik was er ook mee bezig maar kennelijk heeft TS er geen geduld voor.
 
Ik moet zeggen dat ik de reactie van OctaFish bijzonder veel vriendelijker vind overkomen dan die van EdMoor. Daar kwam het meer neer op zoek het zelf maar uit. Dus ik ga nu de suggestie van OctaFish proberen.
En EdMoor, ik heb meer geduld dan wie dan ook. Alleen word ik niet graag afgekat. Ik verwacht wel positiever meedenken van een Senior member.
 
Jammer dat je het zo opvat. Zo was het in ieder geval niet bedoeld.
 
Je kan nog eens naar ElseIf kijken...
Code:
    Do While Rng.Offset(0, -3) = True
        If Rng.Offset(0, -1) <= 11 Then
            Rng = blauw1
        ElseIf Rng.Offset(0, -1) <= 22 Then
            Rng = blauw2
        ElseIf Rng.Offset(0, -1) <= 32 Then
            Rng = blauw3
...
        Else
            Rng = blauw15
        End If
    Loop
Het kan nog veel korter als je arrays gebruikt. Die variant ben ik nog aan het uitwerken, maar jullie geven wel heel snel op :).

Hallo OctaFish,

Mag ik nog even vragen hoe ik de Rng moet declareren? Met Long werkt het niet :(
 
Laatst bewerkt:
Gebruik in cel K2 de volgende formule:

PHP:
=IF(G2;IF(H2;"geel";"blauw");"groen") & MATCH(F2;{11;22;32;43;53;63;73;83;93;103;114;124;134;144};1)+1

En als daar ook de prijzen moeten komen:

PHP:
=INDEX(IF(G2;IF(H2;{87;132;197;262;327;392;457;522;588;652;717;782;847;912;977};{89;104;129;152;176;204;235;252;274;295;324;349;374;399;429});{89;99;112;129;142;169;189;204;224;239;248;273;291;324;344}); MATCH(F2;{11;22;32;43;53;63;73;83;93;103;114;124;134;144};1)+1;1)

een eenvoudige UDF zou ook voldoende zijn.

Hallo snb, dat zou handig zijn als het bij deze ene regel bleef, deze worksheet wordt echter gevuld door een formulier op de website en iedere regel moet automatisch berekend worden. De tabel wordt dus snel gevuld. (Er komen dagelijks 10-30 aanvragen). De klant moet het resultaat krijgen (dit wordt ingelezen in een Word-document).
Dus ik zou heel vrolijk worden van een VBA-oplossing.
 
Al het quoten is niet nodig evenmin alles hard coderen. Zet de gegevens in een tabel en probeer logische vragen op deze tabel los te laten.

Er valt van alles aan te verbeteren maar geeft je wel een ingang.
Code:
Sub berekening()
  ar = Sheet2.ListObjects(1).DataBodyRange
  ar1 = Blad1.ListObjects(1).DataBodyRange
  For j = 1 To UBound(ar1)
    If ar1(j, 7) Then
      t = 1
        If ar1(j, 8) Then
          t = t + 15
          If ar1(j, 9) Then
            t = t + 15
          End If
        End If
     End If
     ar1(j, 11) = Application.Index(Sheet2.Columns(2), Application.Match(ar1(j, 6), Sheet2.Columns(3), 1))
  Next j
  Blad1.ListObjects(1).DataBodyRange = ar1
End Sub
 

Bijlagen

Ik heb een aantal niets toevoegende berichten weggehaald.

Laten we het netjes houden en op de oplossing focussen (en dus ook de aantijgingen achterwegen laten).

m.v.g
Rick van Lieshout
 
Dank Rick, ik voelde me al behoorlijk ongemakkelijk.

@VenA mag ik vragen hoe hij dan weet of het waar is? Als ik 10 invul krijg ik een ongeldig antwoord, bij bv 60 krijg ik het antwoord dat hoort bij t/m 53.
 
Waarschijnlijk gebruik ik volgens jullie nu veel teveel code maar hoofdzaak voor mij is dat de macro nu werkt. Do While gaf een loop waar hij niet meer uit wilde komen dus is alles opgelost met If. EdMoor, ik heb de ActiveCell eruit gehaald en vervangen door variabelen zoals prijs. De Offset heb ik ook door variabelen vervangen.
Dank voor alle hulp.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan