• 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.

Hulp nodig bij kloppend maken VBA code

Status
Niet open voor verdere reacties.

JWExcel

Gebruiker
Lid geworden
20 mrt 2015
Berichten
44
Beste VBA-Wizards,

Ik heb net een deel van de code geschreven van onderstaand probleem, echter kan ik hem niet vinden in het bestand. Kan iemand wijzen waar ik hem heb opgeslagen of is hij perongeluk verwijderd?

Probleem:
Wat ik probeer is om op datablad D cel S3 het getal te krijgen van het aantal zieken van adecco.
Hiervoor ga ik naar datablad "A", hier staan per dag aantal z voor 2 zieke uren.
Ik wil nu doormiddel van VBA code dat van bereik G8 tm G100 kijkt waar Adecco staat en dan van die regels in kolom AD tm AG het aantal Ztjes telt.
Dit totaal aantal z'tjes wil ik dan door 4 delen.

In cel S4 wil ik aantal Z van adecco mensen van kolommen AH tm AK. Enz.


Als nog onduidelijk is: Gele cellen worksheet "D" zijn de plekken waar het antwoord moet komen.
Voor cel S3 zou dit 1,5 moeten worden. S4 1, S5 2 en voor S6 3. (vergeet niet aantal z'tjes delen door 4)


Deel van de code heb ik geschreven met uitleg wat ik bij elke stap doe. Ik hoop dat jullie me met dat middelste stukje kunnen helpen !

Als de bedoeling nog onduidelijk is dan kan je altijd een bericht plaatsen en probeer ik het te verduidelijken.

Mvg,

JWexcel
 

Bijlagen

Hallo JWExcel,

1: Het .xlsx bestand kan geen macro's bevatten (.xlsm of .xlsb kan dat wel).
2: Bij mijn uitkomst in cel S3 krijg ik als waarde 2,5 i.p.v. 1,5 (10/4).
3: code staat in module1.
Code:
Sub hsv()
Dim c As Range, firstaddress As String, j As Long, jj As Long, hsv As Long, sn
With Sheets("A")
For j = 34 To 1069 Step 4
 Set c = .Range("g8:g100").Find("Adecco", , xlValues, xlWhole)
     If Not c Is Nothing Then
       firstaddress = c.Address
       Do
          sn = .Range(.Cells(c.Row, j - 4), .Cells(c.Row, j))
            For jj = 1 To 4
              If sn(1, jj) = "z" Then hsv = hsv + 1
             Next jj
        Set c = .Range("g8:g100").FindNext(c)
     Loop While Not c Is Nothing And c.Address <> firstaddress
        Sheets("D").Cells(Rows.Count, "S").End(xlUp).Offset(1) = hsv / 4
        hsv = 0
     End If
  Next j
 End With
End Sub
 

Bijlagen

Heey HSV,

Bedankt voor je vba code, hij werkt perfect.
Ik zie dat ik verkeerde bestand heb toegevoegd (zonder de code).

Ik had de code natuurlijk anders, vele wegen leiden naar Rome. Zou je kunnen kijken wat ik op mijn manier moet aanpassen dat het werkt?


Sub UitzendkrachtenZiek2()
Dim Beer As Integer
Dim Cola As Integer
Dim Dirk As Integer
Dim x As Integer


For Beer = 0 To 350
For Cola = 8 To 100
For Dirk = 0 To 4
If Worksheets("A").Cells(9, Cola) = Adecco Then
'count z in Worksheets("A").Cells(30 + 4 * Beer, Cola) tot en met
'Worksheets("A").Cells(34 + 4 * Beer, Cola)

If Worksheets("A").Cells(30 + Dirk + 3 * Beer, Cola) = Z Then x = x + 1
Next Dirk
End If

Else:
Next Dirk
End If

Else: Next Cola

Worksheets("D").Cells(9, 3 + Beer) = x / 4

Reset x

Next Beer


End Sub
 
Omdat ik graag de VBA manier wil begrijpen en de excel manier. In andere vraag ben ik de excel manier aan het toepassen en hier de VBA manier. Als dat niet goed is dan zal ik dit voortaan onder dezelfde vraag doen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan