Fout 1004 tijdens uitvoeren

Status
Niet open voor verdere reacties.

Plannert

Gebruiker
Lid geworden
2 dec 2011
Berichten
34
Goedenmorgen,

Hopelijk kan iemand mij helpen met het volgende probleem.

Onderstaande code werkt, tot zover geen probleem :).

De bereiken die met deze code worden gedefinieerd die roep ik aan vanuit een ander excel document, door middel van een hyperlink/bookmark. Daarmee wordt het bestand geopend en bij het openen van het bestand wordt ook deze code gedraaid omdat ik deze heb opgenomen in de Workbook_open() routine. Dit omdat de bereiken kunnen varieren in het bestand en op deze manier is dat altijd actueel. Dit gaat allemaal goed totdat de code aankomt bij "ActiveWorkbook.Names.Add Name:=WOnr, RefersToR1C1:=Adres". Hierin volgt de volgende foutmelding:

Foutmelding.png

Wanneer ik vervolgens op foutopsporing klik en vervolgens ook op F8 en F5 dan loopt de code gewoon door, dus er lijkt niets mis te zijn. Ik heb het al geprobeerd met "On error resume Next" maar dan worden de bereiken niet gedefinieerd. Dus de concrete vraag, hoe zorg ik er voor dat de code blijft werken zoals hij nu doet, maar dat ik de foutmelding niet meer krijg.

Code:
Sub NamenBenoemen()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

Dim n As Name
Dim Adres As Variant
For Each n In ActiveWorkbook.Names
  If Left(n.Name, 2) = "WO" Then n.Delete
Next n

Sheets("Regels").Select
Rij = 3

Do
    If Cells(Rij, 1) = "x" Then
    Else
    WOnr = Cells(Rij, 1) & "_"
    Start = Rij
        Do
            If Cells(Rij, 1) = Cells(Rij + 1, 1) Then
                Rij = Rij + 1
            End If
        Loop Until Cells(Rij, 1) <> Cells(Rij + 1, 1)
        Eind = Rij
        Range(Cells(Start, 1), Cells(Eind, 1)).Select
        Adres = "=Regels!R" & Start & "C1:R" & Eind & "C20"
        ActiveWorkbook.Names.Add Name:=WOnr, RefersToR1C1:=Adres
    End If
Rij = Rij + 1
Loop Until Cells(Rij, 1) = ""

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

Alvast bedankt,
Patrick Brouwer
 
Laatst bewerkt door een moderator:
Vermijd 'Select' en 'Activate' in VBA.
Het zou prettig zijn de opbouw van de gegevens in werkblad 'regels' te kennen: plaats een Excel voorbeeldbestand.

Cellen met gegevens kun je inlezen met usedrange, currentregion of specialcells.
Vermijd interaktie met het werkblad zoveel mogelijk door Arrays te gebruiken.

De macro die jij toont is geen Workbook_Open gebeurtenismacro.
Je beschrijving lijkt daardoor wat tegenstrijdig.
 
Laatst bewerkt:
Bekijk bijlage Helpmij_1.xlsm
Bekijk bijlage Helpmij_2.xlsm

Zie bijgaande bestanden.

Uit bestand _2 wil ik via de link die daar is gemaakt dat het bestand _1 wordt geopend. Ik heb deze voorbeeld bestanden getest en ze geven dezelfde fout melding als in mijn originele bestand. Waar ik tijdens het maken van het voorbeeld bestand wel achter ben gekomen is dat het uitmaakt of ik de module Hyperlinks wel of niet gebruik.

Dus terwijl ik dit schrijf heb ik de modules omgedraaid en het probleem doet zich nu niet meer voor.

Om even te reageren op snb:
- De module die ik beschrijf wordt aangeroepen vanuit Workbook_Open gebeurtenismacro, zoals je in de voorbeeld bestanden kan zien.
- Aangezien ik verre van een expert ben in VBA, maar met gezond boeren verstand, Google en de macrorecorder mijn modules en formulieren maak. Zou je mijn code willen herschrijven met de zaken die je aangaf, over select, activate en arrays? Zodat ik die zaken in de toekomst ook in mijn modules verwerk en ook beter begrijp wat ik aan het doen ben.

Alvast bedankt,
 
Mij lijkt dat je overbodig veel benoemde gebieden gebruikt en hyperlinks aanmaakt.

Verwijder alle VBA code uit de Workbook_open gebeurtenis.
Verwijder alle hyperlinks.

Zet in de macromodule van het werkboek

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Count = 1 And Target <> "" And Target.Column = 1 Then 
    Application.Goto Blad03.Columns(1).Find(Target.Value)
    cancel=true
  end if
End Sub

Met dubbelklikken kom je nu altijd ter bestemde plekke.
 
Super, dat werkt perfect.

Bedankt, ik zet de vraag op opgelost!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan