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

Status
Niet open voor verdere reacties.

Teadrip

Gebruiker
Lid geworden
23 jun 2015
Berichten
23
Ik moet een if - then - else combineren met een do while om het geheel niet nog ingewikkelder te maken. Ik zal een stukje code plakken

laatsteRij = Range("A1").CurrentRegion.Rows.Count
ActiveCell = Cells(laatsteRij, 22)

If ActiveCell.Offset(0, 4) = True Then
Do While ActiveCell.Offset(0, 3) = True​
If ActiveCell.Offset(0, 7) <= 10 Then variabele1​
Else​
If ActiveCell.Offset(0, 7) <= 20 Then variabele2​

De correcte End if's zijn geplaatst, de variabelen zijn ook gedefinieerd. Hij loopt stuk op de 2e If ActiveCell.Offset, op het deel .Offset (rood gekleurd nu)
Er moet dus eerst gekeken worden in de 4e kolom links van de cel, dan een test of de cel in de 3e kolom links van de cel klopt en dan moet er nog voldaan worden aan een reeks waarden in de 7e kolom links van de cel.

Wie kan mij verder helpen? Ik zou zeer erkentelijk zijn!!!
 
Je zegt dat de correcte End If's al zijn geplaatst, maar dat is dus niet zo.
Haal de Else eruit, die If is al afgesloten door een opdracht direct achter Then te plaatsen in plaats van op de volgende regel.

Verder geeft het plaatsen van halve code niet echt zekerheid op een correct antwoord en het lijkt erop dat er meer niet goed is, maar dat valt zo dus niet te zeggen.
 
Laatst bewerkt:
Hallo Ed,

Ik heb alle variabelen (na Then) een regel lager geplaatst maar dat heeft dus geen enkel effect :( Hij blijft dezelfde foutmelding geven. De eigenlijke vraagstelling is:
Ik sta in kolom V. Ik moet weten of de waarde in kolom R waar is. Vervolgens moet ik weten of de waarde in kolom S waar is. Kloppen beide dan moet er nog gecontroleerd worden wat de waarde is in kolom O. Is deze <=10 dan is het antwoord variabele1, is deze <=20 dan is het antwoord variabele2 en zo door tot variabele 15.
Als de waarde in kolom R waar is maar niet in S dan moet er ook gekeken worden naar de waarde in kolom O maar dan komen de variabelen uit een andere tabel. Vervolgens als beide waarden (R en S) niet waar zijn dan moet er ook gekeken worden naar kolom O en weer uit een andere tabel waarden worden gehaald. Ik heb dus 3x 15 waarden die niet overeenkomen maar deze heb ik dus allemaal gedeclareerd om als uitkomst te kunnen dienen.
Ik hoop dat ik zo een beetje duidelijker ben. Het ergste is dat deze macro uiterlijk woensdag moet werken.....

Ik zie wat ik vergeten ben.... ActiveCell = variabele1 (enzovoorts.... tot de 15) en hij werkt! Dank dat je me toch verder hebt laten nadenken!!

Ik hoor heel graag van je (of van iemand anders die me verder kan helpen).
Vriendelijke groet,
teadrip
 
Laatst bewerkt:
Lijkt me een typische gevalletje van een Excel-formule. VBA is niet nodig/voor-de-hand-liggend.
 
Excel wordt helemaal gestoord als ik deze formule wil plaatsen, vandaar VBA. Om onverklaarbare redenen werkt het nu ineens niet meer, ik had wat aanvullingen gedaan maar die lieten Excel vastlopen. Ik zal een PSD uploaden zodat misschien duidelijker wordt wat ik bedoel.

gbg.jpg

alle variabelen zijn gedeclareerd (45 stuks dus) plus de laatsteRij. Ik geef de macro weer tot en met waar hij vastloopt. In het eerste voorbeeld verwees ik naar cellen rechts, maar er moet naar cellen links verwezen worden.

voorbeeld variabele declaratie:
Dim geel1 As Integer, geel2 As Integer, geel3 As Integer, geel4 As Integer, geel5 As Integer
Dim geel6 As Integer, geel7 As Integer.........

vervolgens:
geel1 = 150
geel2 = 175
geel3 = 225...

Na het declareren van de 45 variabelen schrijf ik:

laatsteRij = Range("A1").CurrentRegion.Rows.Count
ActiveCell = Cells(laatsteRij, 22)

If ActiveCell.Offset(0, -4) = True Then
Do While ActiveCell.Offset(0, -3) = True​
If ActiveCell.Offset(0, -7) <= 10 Then
ActiveCell = geel1
Else​
If ActiveCell.Offset(0, -7) <= 20 Then​
en zo dus tot en met geel15, dan het hele gedoe nog met blauw en als laatste met groen. Hij werkte toen ik alles gedeclareerd had als String, omdat er geteld moest worden heb ik de variabelen als integer gedeclareerd en toen liep hij dus vast.

Hij loopt nu al vast op de eerste If ActiveCell.Offset(0, -4) = True
Ik zou zeer dankbaar zijn voor enige hulp!

Vriendelijke groet,
teadrip
 
En nog steeds geen voorbeeld document en maar halve code.
 
We hebben niks aan een plaatje, maar des te meer aan een bestandje. En maak code op met de CODE tag knop, wordt die bij jou ook weer eens afgestoft :).
 
sorry, ik weet niet wat jullie bedoelen met de CODE tag knop, ik zie hem wel staan maar weet niet wat ik ermee moet doen. Dit is de eerste keer dat ik een uitgebreide macro schrijf. Dus excuseer voor mijn fouten. kan ik de excelsheet hier gewoon uploaden?
 
Het staat allemaal uitgelegd in de link die ik plaatste en ook in m'n handtekening staat.
 
Wijzig eerst die variabele Activecell eens in wat anders.
Het is een voor VBA gereserveerd woord en dergelijke woorden moet je NOOIT als naam van een variabele gebruiken.
 
Laatst bewerkt:
Mag ik een suggestie dan? Ik heb dit uit een leerboek "Aan de slag met Excel VBA". Ik had ook niet de indruk dat ik hem als variabele gebruikte, toch? In die cel wil ik de oplossing en naast die cel moet hij zijn variabelen halen?
Dank!
 
Laatst bewerkt:
In dat boek zal ActiveCell niet als variabele zijn gebruikt.
De hele opzet loopt er nu door mis en dient daardoor compleet herschreven te worden.
Het is niet voldoende om er een geldige variabele van te maken omdat ActiveCell een object is.

Als je dan toch bezig bent, kijk dan ook eens naar het Select Case statement in plaats van als die If's voor dezelfde variabele.
 
Laatst bewerkt:
In dat boek staat letterlijk die code van ActiveCell om daar een bepaalde cel mee aan te duiden.
Ik ga dat Select Case uitproberen. Dank.
 
In dat boek staat letterlijk die code van ActiveCell om daar een bepaalde cel mee aan te duiden.

Dat klopt, maar dan niet als gebruik als variabele maar als object.
 
De Select Case is niet bruikbaar omdat er gekeken moet worden naar een cel die enkele kolommen vóór de actieve cel ligt (waar de oplossing in moet komen te staan). Ik krijg dus een foutmelding bij gebruik van Select Case.
 
Je kan dat ook niet zomaar vervangen. Zoals ik al zei, het hele ding moet opnieuw geschreven worden.
 
Dank voor je hulp, ik zoek het verder wel met andere sites op internet uit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan