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

VBA: Probleem met data mapping

  • Onderwerp starter Onderwerp starter RWMJ
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

RWMJ

Gebruiker
Lid geworden
17 jan 2022
Berichten
25
Beste,

Ik ben leraar op het mbo en ik ben het proces van individuele student examenaanvragen te automatiseren. In het volgende bestand met gefingeerde namen wil ik dat de studentgegevens in de correcte velden komen te staan op basis van een rijselectie.

Probleem: de gegevens komen niet in de velden vanwege fout 1004 (Door de toepassing of object gedefinieerde fout).
Vraag: Wat dient er te gebeuren voordat de geselecteerde gegevens in de juiste cellen kunnen komen te staan?

Toelichting bestand
Rij 12 bevat de cellen waarin onderstaande informatie moet komen te staan, dus de gegevens uit kolom 3 moeten in cel E2 komen te staan etc.

Code:
Option Explicit

Dim StudRow As Long
Dim StudCol As Long


Sub Stud_Load()
With Blad1
    If .Range("B2").Value = Empty Then Exit Sub
    .Range("B3").Value = True 'set stud load to true
    StudRow = .Range("B3").Value 'Student Row
    For StudCol = 3 To 10
        .Range(.Cells(12, StudCol).Value).Value = .Cells(StudRow, StudCol).Value
    Next StudCol
        On Error Resume Next
        .Range("B3").Value = False 'set stud load to false
End With
End Sub

Bijlage: Het exceldocument
 

Bijlagen

Laatst bewerkt:
Je haalt de Row uit B3 maar die staat in B2?
Zo moet je volgens mij ook regel 11 gebruiken waar je nu regel 12 gebruikt.
Kortom, kijk je verwijzingen eens goed na.
 
Laatst bewerkt:
Bv.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, ListObjects(1).DataBodyRange) Is Nothing And Target.Count = 1 Then
 Range("B2").Value = Target.Row
  For Each cl In Array([e2], [e3], [h2], [h5], [h6], [e5], [e6], [d5])
    cl.Value = Cells(Target.Row, 3).Offset(, x)
    x = x + 1
  Next cl
End If
End Sub
 
Maak een onderscheid tussen werkblad met een database van gegevens en een werkblad waarin op een bepaalde manier gegevens uit de databse worden weergegeven.
Gooi die twee soorten werkbladen niet door elkaar.
De gegevens dienen centraal te staan, niet de vormgeving.
Zie bijv. dus af van samengevoegde cellen. VBA houdt daar ook niet van.
Maak voor Outlook gebruik van late binding in plaats van early binding.
 
Laatst bewerkt:
Dames / heren,

Ik dank u allen hartelijk, de fouten die ik had gemaakt waren een foutieve verwijzing en een syntaxfout in blad1.
De verwijzing moest de selectie in B2 zijn ipv B3, en de syntaxfout kon ik er even niet uit halen omdat ik dat onderdeel nog niet had geleerd.

Mijn probleem is opgelost, nogmaals hartelijk dank voor het corrigeren en voor de tips.

Groeten,

Robin
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan