VBA: compileerfout

Status
Niet open voor verdere reacties.

sickofitall

Gebruiker
Lid geworden
29 sep 2008
Berichten
375
Hallo

Ik heb een macro geschreven en deze werkt prima op mijn pc. Echter, ik heb deze macro geschreven voor iemand die op een Mac werkt.
Als ik de macro probeer op de Mac krijg ik de volgende foutmelding:

Compileerfout : Kan de methode of het gegevenslid niet vinden.

Weet iemand wat dit wilt zeggen en wat ik eraan kan doen?

Dit is mijn macro:
Code:
Sub verloop()
'rijen invoegen
    '--------------
    Range("D1").Value = 1   'telling
    Rows("235:464").Insert Shift:=xlDown
    Range("D1").Value = 2   'telling
    Range("A5:L234").Copy
    Range("D1").Value = 3   'telling
    Range("A235").PasteSpecial Paste:=xlPasteValues  '!!! eerst copy/special om daarna opnieuw formules over te kopiëren met oud bereik en daarna NEW op te zoeken
    Range("D1").Value = 4   'telling
    Application.CutCopyMode = False



    'bereiken invullen
  '-------------------
'    Range("M1:M2").Copy
'    Range("M5").Paste
'    Range("M235").Paste
'    Application.CutCopyMode = False
  
  
    Range("M5").FormulaR1C1 = _
        "=ADDRESS(ROW(RC[-9]),COLUMN(RC[-9]))&"":""&ADDRESS(ROW(R[229]C[-1]),COLUMN(R[229]C[-1]))"
    Range("D1").Value = 5   'telling
    Range("M6").FormulaR1C1 = _
        "=ADDRESS(ROW(R[229]C[-8]),COLUMN(R[229]C[-8]))&"":""&ADDRESS(ROW(R[3348]C[-1]),COLUMN(R[3348]C[-1]))"
    Range("D1").Value = 6   'telling
    Range("M235").FormulaR1C1 = _
        "=ADDRESS(ROW(RC[-9]),COLUMN(RC[-9]))&"":""&ADDRESS(ROW(R[229]C[-1]),COLUMN(R[229]C[-1]))"
    Range("D1").Value = 7   'telling
    Range("M236").FormulaR1C1 = _
        "=ADDRESS(ROW(R[229]C[-8]),COLUMN(R[229]C[-8]))&"":""&ADDRESS(ROW(R[3348]C[-1]),COLUMN(R[3348]C[-1]))"
    Range("D1").Value = 8   'telling
    
    
    'hulpkolom invullen
    Range("L235").FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC5,INDIRECT(R236C13),7,0)),2,VLOOKUP(RC5,INDIRECT(R236C13),7,0)-RC[-8])"
    Range("D1").Value = 9   'telling
    Range("L235").AutoFill Destination:=Range("L235:L464"), Type:=xlFillDefault
    Range("D1").Value = 10   'telling
    
    'Left/right invullen
    Range("I235").FormulaR1C1 = _
        "=IF(IS.EVEN(RC[3]),"" "",""Change left/right page"")"
    Range("D1").Value = 11   'telling
    Range("I235").AutoFill Destination:=Range("I235:I464"), Type:=xlFillDefault
    Range("D1").Value = 12   'telling

    
    'Formules oud bereik overkopiëren
    '--------------------------------
    Range("F235").FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC5,INDIRECT(R236C13),2,0)),"""",VLOOKUP(RC5,INDIRECT(R236C13),2,0))"
    Range("D1").Value = 13   'telling
    Range("G235").FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC5,INDIRECT(R236C13),3,0)),"""",VLOOKUP(RC5,INDIRECT(R236C13),3,0))"
    Range("D1").Value = 14   'telling
    Range("H235").FormulaR1C1 = _
        "=IF(ISERROR(VLOOKUP(RC5,INDIRECT(R236C13),6,0)),"""",VLOOKUP(RC5,INDIRECT(R236C13),6,0))"
    Range("D1").Value = 15   'telling
    
    Range("F235:H235").AutoFill Destination:=Range("F235:H464"), Type:=xlFillDefault
    Range("D1").Value = 16   'telling
    
    
    
    'NEW gegevens overnemen
    '----------------------
    Range("A5").Select
     
    Dim rijg As Long
    
    rijg = 5
    Do Until rijg = 234
       If Cells(rijg, 8).Value = "NEW" Then
            Cells(rijg + 230, 6).Value = Cells(rijg, 6).Value
            Cells(rijg + 230, 7).Value = Cells(rijg, 7).Value
            Cells(rijg + 230, 8).Value = Cells(rijg, 8).Value
                
            Range("D1").Value = rijg + 12 'telling
            rijg = rijg + 1
        Else
            Range("D1").Value = rijg + 12 'telling
            rijg = rijg + 1
    
        End If
    Loop
    
    
    
    
'Invulblad leegmaken
'-------------------
    'sorteernummer met één vermeerderen
    [A3] = [A3] + 1
    Range("D1").Value = 247   'telling
    'cataloognaam verwijderen
    Range("C5").ClearContents
    Range("D1").Value = 248   'telling
    'Formules invoegen   ----> Vaste formules staan op F5:I5
    Range("E5:I5").AutoFill Destination:=Range("E5:I234"), Type:=xlFillDefault
    Range("D1").Value = 249   'telling


'Werkblad aanmaken
'-----------------
    'bereikformule
    Sheets("Verloop").Range("D1").FormulaR1C1 = "=Gegevens!R[234]C[9]"
    'verloop cataloognaam
    Sheets("Verloop").Range("D8").Value = Sheets("Gegevens").Range("B3").Value

    'werkblad aanmaken + naam invullen
    Sheets("Verloop").Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
    Sheets("Verloop (2)").Name = Sheets("Gegevens").Range("B3").Value

    'afdrukbereik
    Dim rij As Long
    rij = 34
    Do Until Cells(rij, 23).Value = "X"
        rij = rij + 17
    Loop
    ActiveSheet.PageSetup.PrintArea = "$A$1:$V$" & rij


Sheets("Gegevens").Select
Range("A5").Select


Range("D1").Value = 250   'telling
MsgBox "Update OK          ", vbExclamation
Range("D1").Value = 0   'telling
        
    
End Sub

Hopelijk is de macro op zich een beetje duidelijk.
Ik krijg een foutmelding reeds bij het eerste lijn: Sub verloop()

Alvast bedankt voor de moeite!!
 
Verplaatst naar VBA
 
sickofitall,

Ik dacht dat mij een poos geleden door een Mac verkoper verteld was dat Excel op de Mac niet met macro's werkt.

Het was mijn bedoeling om een mac te kopen, is grafisch beter dan Windows.
Dus heb ik die niet gekocht omdat de macro's daar niet werken in Excel.

Of je moet mij kunnen overtuigen dat dit wel mogelijk is en waar ik dat dan kan zien.
 
Dit heb ik op het internet gevonden.
Als het gaat om Excel bestanden ZONDER Macro functies dan is Office voor Mac 2008 een prima optie, als er Macro functies in een excel bestand zitten dan gaat het mis. Deze functie is niet beschikbaar op de Mac.
 
op Mac werken er wel degelijk macro's :)

De Excel versie van Mac laat ook toe om macro's op te nemen e.d.
Excel op Mac heeft niet alleen Visual Basic Editor maar ook RealBasic Editor.

Die verkoper kent er bitter weinig van me dunkt :)


Maar mijn probleem van de beginpost is nog steeds niet opgelost, na een dagje zoeken :s

Mijn voorganger op mijn werk had een macro geschreven (eerder gewoon opgenomen) en deze werkte op de Mac, maar er moesten aanpassingen aan gebeuren. Toen ik de programmacode van mijn voorganger afprinte had ik 12 pagina's :shocked:

Ik heb dit nu kunnen reduceren tot een kleine 2 pagina's + de aanpassingen gedaan, maar nu werkt mijn macro niet :(


EDIT: Ge hebt gelijk wat betreft Mac 2008, geen ondersteuning van macro's. Maar het zou mij verwonderen moesten ze hier op mn werk Mac2008 gebruiken...
 
Laatst bewerkt:
sickofitall,

op Mac werken er wel degelijk macro's
Die verkoper kent er bitter weinig van me dunkt

Het zal best wel gaan als je dat zegt, heb je zeker ook Windows geinstalleerd.
De verkoper was er een van Appel zelf, dus neem ik aan dat hij het wel weet.
 
ik heb hier effe gecheckt.

We gebruiken hier Mac2004.

Ik weet niet of Windows is geïnstalleerd. Microsoft Excel daarentegen wel. :)
 
En hoe ziet een opgenomen macro eruit? Als deze ook met sub huppeldepup() begint dan wordt het lastig denk ik.
Dus, hoe ziet de code van zo'n opgenomen macro eruit?

Ron
 
Controleer eerst eens bij Extra >> Invoegtoepassingen of alle benodigde verwijzingen aangevinkt zijn.
 
Ron,

dat is op de mac hetzelfde als op mijn pc; een klein testje:
Code:
Sub Macro1()
'
' Macro1 Macro
' De macro is opgenomen op 4/01/2010 door huppeldepup.
'

'
    Rows("20:34").Select
    Selection.Insert Shift:=xlDown
    Range("F8:F9").Select
    Selection.Copy
    Range("F23").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Blad1").Select
    Sheets("Blad1").Copy Before:=Sheets(1)
End Sub

Echter, als ik die .selects en selection wegdoe zodat ik minder regels code heb, krijg ik opnieuw de compileerfout :confused:
 
Krijg je die compileerfout ook met de volgende (jouw bewerkte) macro ?

Code:
Sub Macro1()
' De macro is opgenomen op 4/01/2010 door huppeldepup.

    With Thisworkbook.sheets("Blad1")
       .Rows("20:34").Insert
       .Range("F23:F24")=.Range("F8:F9").value
       .Copy Thisworkbook.Sheets(1)
    End With
End Sub
of
Code:
Sub Macro2()
' De macro is opgenomen op 4/01/2010 door huppeldepup.

    With ActiveWorkbook.sheets("Blad1")
       .Rows("20:34").Insert
       .Range("F23:F24")=.Range("F8:F9").value
       .Copy ActiveWorkbook.Sheets(1)
    End With
End Sub
 
Laatst bewerkt:
snb,

nee, dan krijg ik geen foutmelding.
Dan moet ik volledig mijn macro herschrijven en With en End With gebruiken?
 
Het gaat er waarschijnlijk om dat je precies moet aangeven in welk werkboek en in welk werkblad de akties moeten plaatsvinden. Dat is sowieso de beste methode voor VBA.
Dus herschrijving van je macro is dan meteen een verbetering van je macro, omdat die daarmee robuuster wordt (in diverse omgevingen dezelfde resultaten). Ook al zou je de macro niet voor een mac maken, dan nog zou mijn suggestie zijn alle select, activate, selection, activecell, activesheet, etc. uit je code te halen. Dat is Userinterface (opneem) -VBA. Maak er echte VBA van.
 
onder F23:F24 staan formules en met jouw copy/paste de macro de Values.
Hoe copieer ik zogezegd de formules?
 
Het gaat er waarschijnlijk om dat je precies moet aangeven in welk werkboek en in welk werkblad de akties moeten plaatsvinden. Dat is sowieso de beste methode voor VBA.
Dus herschrijving van je macro is dan meteen een verbetering van je macro, omdat die daarmee robuuster wordt (in diverse omgevingen dezelfde resultaten). Ook al zou je de macro niet voor een mac maken, dan nog zou mijn suggestie zijn alle select, activate, selection, activecell, activesheet, etc. uit je code te halen. Dat is Userinterface (opneem) -VBA. Maak er echte VBA van.

ik begin er minder en minder van te begrijpen.
Ik werk met With Activeworkbook enzo en voeg dan stapje per stapje een regel bij om zo steeds mijn macro te testen om te zien of hij vastloopt of niet.

Nu loopt hij vast op End With?? zie bijlage
 

Bijlagen

  • wtffffff.JPG
    wtffffff.JPG
    61,4 KB · Weergaven: 79
Er zit wel enige logica in sommige produkten van MS.

Code:
Sub Macro2()
  With ActiveWorkbook.sheets("Blad1")
    .Rows("20:34").Insert
    .Range("F23:F24")=.Range("F8:F9")[COLOR="Red"].formula[/COLOR]
    .Copy ActiveWorkbook.Sheets(1)
  End With
End Sub
vermijd copy / paste(special)
 
hmm, ik doe het zoals je het uitlegt maar ik krijg nog foutmeldingen :s

Nu weet ik toch niet waaraan dit ligt :s
 

Bijlagen

  • wtffffff.jpg
    wtffffff.jpg
    95,2 KB · Weergaven: 95
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan