• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Visual Basic Vraag

Status
Niet open voor verdere reacties.

Marco Hoeksma

Gebruiker
Lid geworden
21 mrt 2006
Berichten
50
Goedendag,

ik ben voor mijn stage bezig met een klanttevredenheidsonderzoek. Hiervoor heb ik een excel bestand gemaakt waarin de resultaten kunnen worden verwerkt.

Ik heb hiervoor een invoerblad gemaakt met keuzevakken (hierdoor ontstaan de keuze mogelijkheden 1 t/m 8). De bedoeling is nu dat ik de enquete volledig invoer en wanneer ik dan op de Verwerkingsknop druk moeten de resultaten op het betreffende tabblad worden opgeteld.

Ik ben hiervoor met behulp van visual basic een macro aan het schrijven. Het lukt me om één vraag te verwerken, maar bij de volgende vraag gebeurt er niks. Wie kan mij hier bij helpen? Dit heb ik tot nu toe:

Sub Verwerken()
Application.ScreenUpdating = False
If Range("D6") < 1 Then
MsgBox "Nog niet alle vragen zijn beantwoord. Doorgaan svp.", vbExclamation
Exit Sub
End If

If Range("D6") = 1 Then
Sheets("WA Almere").Select
Range("H6") = Range("H6") + 1
End If
If Range("D6") = 2 Then
Sheets("WA Almere").Select
Range("H7") = Range("H7") + 1
End If
If Range("D6") = 3 Then
Sheets("WA Almere").Select
Range("H8") = Range("H8") + 1
End If
If Range("D6") = 4 Then
Sheets("WA Almere").Select
Range("H9") = Range("H9") + 1
End If
If Range("D6") = 5 Then
Sheets("WA Almere").Select
Range("H10") = Range("H10") + 1
End If
If Range("D6") = 6 Then
Sheets("WA Almere").Select
Range("H11") = Range("H11") + 1
End If
If Range("D6") = 7 Then
Sheets("WA Almere").Select
Range("H12") = Range("H12") + 1
End If
If Range("D6") = 8 Then
Sheets("WA Almere").Select
Range("H13") = Range("H13") + 1
End If

(HIER BEGINT VRAAG 2... WAT DOE IK HIER NIET GOED???)

If Range("D19") = 1 Then
Sheets("WA Almere").Select
Range("H18") = Range("H18") + 1
End If
If Range("D19") = 2 Then
Sheets("WA Almere").Select
Range("H19") = Range("H19") + 1
End If
If Range("D19") = 3 Then
Sheets("WA Almere").Select
Range("H20") = Range("H20") + 1
End If
If Range("D19") = 4 Then
Sheets("WA Almere").Select
Range("H21") = Range("H21") + 1
End If
If Range("D19") = 5 Then
Sheets("WA Almere").Select
Range("H22") = Range("H22") + 1
End If
 
Vervang eerst eens

Code:
If Range("D6") = 1 Then
Sheets("WA Almere").Select
Range("H6") = Range("H6") + 1
End If
If Range("D6") = 2 Then
Sheets("WA Almere").Select
Range("H7") = Range("H7") + 1
End If
If Range("D6") = 3 Then
Sheets("WA Almere").Select
Range("H8") = Range("H8") + 1
End If
If Range("D6") = 4 Then
Sheets("WA Almere").Select
Range("H9") = Range("H9") + 1
End If
If Range("D6") = 5 Then
Sheets("WA Almere").Select
Range("H10") = Range("H10") + 1
End If
If Range("D6") = 6 Then
Sheets("WA Almere").Select
Range("H11") = Range("H11") + 1
End If
If Range("D6") = 7 Then
Sheets("WA Almere").Select
Range("H12") = Range("H12") + 1
End If
If Range("D6") = 8 Then
Sheets("WA Almere").Select
Range("H13") = Range("H13") + 1
End If

door

Code:
Sheets("WA Almere").Select
Range("H" & Range("H6") + 5) = Range("H" & Range("H6") + 5) + 1

Voor het vervolg zal je een bestandje moeten bijvoegen.
 
Hallo Marco,

Je hebt al véél geluk dat zelfs de eerste vraag wordt opgelost.

Vermijd Select; Selection en Activate in je codes. Met andere woorden: Je kan je macrorecorder wel gebruiken: maar je zal daarna je code ook moeten herschrijven.

Een voorbeeld:

Dit:

If Range("D6") = 1 Then
Sheets("WA Almere").Select
Range("H6") = Range("H6") + 1
End If

wordt dan:

If Range("D6").Value = 1 Then _
Sheets("WA Almere").Range("H6") = _
Sheets("WA Almere").Range("H6") + 1

Bovenstaande zou op één regel geschreven kunnen worden, als je de underscores verwijderd.

Nu de redenen van je fout:

Je bevind je op Blad X
Je kijkt of in cel D6 een waarde staat.
Is dit het geval, dan ga je naar Blad WA Almere

Tot daar gaat het goed.

Dan zit je in Blad WA Almere, en je kijkt of er daar in cel D19 een waarde staat.
NATUURLIJK STAAT DAAR GEEN WAARDE!!!!!!
Jij denkt immers dat je nog in Blad X zit, terwijl je via VBA een ander blad geselecteerd hebt.

Luc

ps. Dit is lang niet de enige redenen waarom je Select zou vermijden. Dit is slechts het topje van de ijsberg.
 
Dank jullie allen voor de snelle en goeie reacties!! Ben weer een stuk wijzer over macro's! Super!

Heb nog een vraag aan LucB... De macro's hoe jij ze hebt geschreven wil ik graag gebruiken, alleen jij laat de antwoorden automatisch doorvoeren naar het antwoord blad. Ik wil graag alle vragen in één macro en wil deze allen tegelijk kunnen doorvoeren naar het antwoordblad met een "Verwerk" button.

Als ik echter gewoon de volgende vraag onder de eerste zet (zie hieronder voor wat ik bedoel), werkt dit niet meer! Heb ondertussen gemerkt dat het wel werkt als ik 5 antwoorden geef bij vraag 1 en gewoon doorga met vraag 2. Klant geeft echter niet altijd 5 antwoorden, waardoor deze manier dus niet werkt. Hoe kan ik dit verhelpen??

n = Range("D6").Value
Sheets("WA Almere").Range("H" & n + 5) = Sheets("WA Almere").Range("H" & n + 5) + 1
n = Range("D8").Value
Sheets("WA Almere").Range("H" & n + 5) = Sheets("WA Almere").Range("H" & n + 5) + 1
n = Range("D10").Value
Sheets("WA Almere").Range("H" & n + 5) = Sheets("WA Almere").Range("H" & n + 5) + 1
n = Range("D12").Value
Sheets("WA Almere").Range("H" & n + 5) = Sheets("WA Almere").Range("H" & n + 5) + 1
n = Range("D14").Value
Sheets("WA Almere").Range("H" & n + 5) = Sheets("WA Almere").Range("H" & n + 5) + 1

(Hierboven is vraag 1, deze heeft meerdere keuzemogelijkheden, dus de klant kan 5 antwoorden geven. Dit loopt goed. Hieronder staat vraag 2, en dit werkt niet)

n = Range("D19").Value
Sheets("WA Almere").Range("H" & n + 17) = Sheets("WA Almere").Range("H" & n + 17) + 1
 
Hallo Marco,

Is het mogelijk een ZIP van je eigen bestand hier te plaatsen.
Dat geeft meer duidelijkheid.
 
Heej LucB,

ik ben ondertussen met een andere manier van start gegaan. Hij is wat complexer maar werkt naar mijn wens.

Bedankt voor je moeite!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan