VBA aanpassen zodat niet gevonden resultaten leeg worden gehaald

Status
Niet open voor verdere reacties.

Tweety1

Gebruiker
Lid geworden
6 mrt 2013
Berichten
637
In het voorbeeld bestand gebruik ik een vba om gegevens toe te voegen vanuit een ander tabblad.
De vba werkt goed alleen gaat het fout als ik een Kolom "AA" bv "test5" veranderd in "test7" de gegevens blijven dan staan van "test5". Hoe kan ik deze aanpassen zodat die cellen leeg worden.

Voorbeeld
Bekijk bijlage Voorbeeld.xlsm


mvg

Kasper
 
Code:
rijencount = 800 'countA gaat niet goed wegens lege rijen
Over welke lege rijen heb je het en ik welk blad? 3 variabelen gebruiken om de naam vast te stellen lijkt mij nogal overbodig. Probeer van jouw vragen eens echte vragen te maken en plaats zinvolle voorbeeldjes.

Code:
If Not c Is Nothing Then
..
Else
..
End if
 
Het gaat om rijen op tabblad "Nieuwe studieact. inroosteren". Deze heb ik nu aangepast door het zoeken naar laatste cel in kolom "AA".
Als ik nu "test5" veranderd in "test7" dan komen de goede gegevens naar voren.
Als ik de cel leeg maak dan blijven de gegevens staan. Dit komt door het stukje "<> "" ". Hoe kan ik dit oplossen.


Ik heb de macro aangepast. Opzich werkt doe goed als ik de naam
Code:
Sub Verwerk_docenten()
Dim LastRow As Long, i As Long
Dim mailadres, pos@, naam As String

LastRow = Cells(Rows.Count, "AA").End(xlUp).Row
For i = 3 To LastRow

    If Trim(Sheets("Nieuwe studieact. inroosteren").Cells(i, 27)) <> "" Then  'om problemen bij lege id te vermijden
    
    With Sheets("Docenten").Columns("I:I")
            
            Set c = .Find(Trim(Sheets("Nieuwe studieact. inroosteren").Cells(i, 27)), lookat:=xlWhole)
            If Not c Is Nothing Then
                c = c.Row
                mailadres = Sheets("Docenten").Cells(c, 8) 'in SIS export staat doopnaam, niet voornaam. Daarom haal ik naam uit mailadres
                pos@ = InStr(1, mailadres, "@")
                naam = Left(mailadres, pos@ - 1)
                
                Sheets("Nieuwe studieact. inroosteren").Cells(i, 28) = naam                               'naam in Nieuwe studieact. inroosteren
                Sheets("Nieuwe studieact. inroosteren").Cells(i, 19) = Sheets("Docenten").Cells(c, 1) 'sisnr in Nieuwe studieact. inroosteren
                          
              Else
              
               Sheets("Nieuwe studieact. inroosteren").Cells(i, 28) = ""
               Sheets("Nieuwe studieact. inroosteren").Cells(i, 19) = ""
                              
            End If
    End With
    End If
            
Next

MsgBox "Docenten zijn bijgewerkt."

End Sub
 
In Nederland gebruiken we geboortenamen: de naam die in de Gemeentelijke Basis Administratie is geregistreerd.
Doopnamen doen er niet toe.

Het kan allemaal veel eenvoudiger/sneller als je met Arrays werkt.

Code:
Sub M_snb()
   sn=sheets("Docenten").cells(1).currentregion
   sp=sheets("Nieuwe studieact. inroosteren").cells(1).currentregion

  for j=1 to ubound(sp)
    if sp(j,27)<>"" then
      for jj=1 to ubound(sn)
        if sn(jj,9)=sp(j,27) then exit for
      next
      sp(j,28)=split(sn(jj,8),"@")(0)
      sp(j,19)=sn(jj,1)
    end if
  next

  sheets("Nieuwe studieact. inroosteren").cells(1).currentregion=sp
End Sub

Waarom heb je geen vlookup (vert.zoeken) formule overwogen ?

PS. Wees slim: gebruik geen spaties in namen van werkbladen.
 
Laatst bewerkt:
Ik heb juist niet voor formule gekozen omdat collega's vergeten hoe ze de cel door moeten trekken.
Als ik vba draaie krijg ik alleen foutmelding: fout 9 het subscript valt buiten het bereik, Bij de regel na "Next"
 
Er zal geen currentregion zijn t/m kolom 28 of sn(jj,8) = leeg.
 
Ik heb juist niet voor formule gekozen omdat collega's vergeten hoe ze de cel door moeten trekken.

Bestudeer eens het gebruik van een 'intelligente' tabel in Excel.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan