Compileerfout - een variabele wordt niet gedefinieerd

Status
Niet open voor verdere reacties.

Doohan

Gebruiker
Lid geworden
20 mrt 2012
Berichten
377
Beste helper,

Ik heb in mijn workbook 2 formulieren met een button Oplsaan als xls op een of andere manier krijg ik steeds de melding Compileerfout - een variabele wordt niet gedefinieerd bij 1 van de button terwijl de code exact hetzelfde is wat gaat hier fout Deze code werkt perfect
Code:
Private Sub butOpslaanalsxls_Click()

    'Deze macro maakt een saveas naar xls met 1 zelf gedefinieerde sheet
    
      
        Sheets("Ventilatielucht").Copy Before:=Sheets(1)
            With ActiveSheet
            .Name = "Ventilatielucht bewerkbaar"
                With .Cells
                .Copy
                .PasteSpecial Paste:=xlPasteAll
                End With
            .Move
        End With
        filesavename = Application.GetSaveAsFilename( _
        fileFilter:="Excel bestanden (*.xls), *.xls")

        ActiveWorkbook.SaveAs Filename:=filesavename
        Me.Hide
    
    
End Sub

en bij deze code krijg ik steeds de melding Compileerfout - een variabele wordt niet gedefinieerd
Code:
Private Sub butOpslaanalsxls_Click()
    'Deze macro maakt een saveas naar xls met 1 zelf gedefinieerde sheet
    
       
        Sheets("EXHAUST").Copy Before:=Sheets(1)
            With ActiveSheet
            .Name = "EXHAUST bewerkbaar"
                With .Cells
                .Copy
                .PasteSpecial Paste:=xlPasteAll
                End With
            .Move
        End With
        filesavename = Application.GetSaveAsFilename( _
        fileFilter:="Excel bestanden (*.xls), *.xls")

        ActiveWorkbook.SaveAs Filename:=filesavename
        Me.Hide
    
    
End Sub

m.vr.gr Martin
 
De 2 macro's hebben de zelfde naam.
Zet bij de 2e code een 1 er achter dan zal hij wel door lopen.

Code:
Private Sub butOpslaanals1xls_Click()
 
Laatst bewerkt:
Ik dacht zelf dat dat niet uitmaakte omdat het private sub in mijn formulier is. maar omdat ik meer verstand van andere dingetjes heb , heb ik er een 1 achter gezet
Code:
Private Sub butOpslaanalsxls1_Click()
    'Deze macro maakt een saveas naar xls met 1 zelf gedefinieerde sheet
    
    
        Sheets("EXHAUST").Copy Before:=Sheets(1)
            With ActiveSheet
            .Name = "EXHAUST bewerkbaar"
                With .Cells
                .Copy
                .PasteSpecial Paste:=xlPasteAll
                End With
            .Move
        End With
        filesavename = Application.GetSaveAsFilename( _
        fileFilter:="Excel bestanden (*.xls), *.xls")

        ActiveWorkbook.SaveAs Filename:=filesavename
        Me.Hide
    
    
End Sub

Het resultaat is dat er nu niks gebeurt, ook geen melding dus heb ik de button naam ook maar even een 1 extra gegevens .En dan krijg ik mijn melding weer. snif
 
Ik dacht dat de dubbelenaam het probleem was, helaas dus niet.
Kun je de macro ook niet met F8 doorlopen?
 
Ik heb hem met F8 doorlopen in de bijlage zie je het resultaatKnipsel.JPG
 
Laatst bewerkt:
Hij geeft - filesavename - als fout?
Dan zal je moeten kijken of dit wel klopt.
Als je met F8 doorloopt en je staat met de cursor op filesavename kun je zien wat het wordt.
Misschien helpt dit?
 
Laatst bewerkt:
ik snap eigenlijk niet wat je bedoelt, Hij komt met de melding compileer fout. Bij de code die wel werkt kom ik netjes in het 'opslaan als scherm' van excel en kan ik gewoon een map op mijn schijf selecteren en het bestand een naam geven en hij word opgeslagen als xls.

in het controle schermpje krijg ik Knipsel.JPG
 
Zo goed ben ik nu ook weer niet, dat ik hier de oplossing voor weet.
Misschien dat iemand met meer ervaring, het probleem weet.
 
Code:
Private Sub knop_Opslaan_Click()
   Sheets("Ventilatielucht").Copy

   with activeworkbook
      .Sheets(1).usedrange=.Sheets(1).usedrange.value
      .Sheets(1).Name = "Ventilatielucht bewerkbaar"
      with application.filedialog(2)
          if .show then c00=.selecteditems(1)
      end with
     .SaveAs c00,51
   end with

   Me.Hide
End Sub
 
Laatst bewerkt:
dank je snb, Als jij de codes maakt zijn ze altijd korter en bondiger en ook minder te begrijpen af en toe, maar meestal werken ze in 1 keer. maar dit keer krijg ik de melding. fout 1004 : door de toepassing of door object gedefinieerde fout.Knipsel.JPG

Ik kan hier helaas morgen pas weer mee verder. Ik moet nl mijn werkplek verlaten. en thuis heb ik geen mikkisoft.
m.vr.gr. Martin
 
Kijk nog eens naar de gewijzigde code in #10
 
Dank je SNB, de code werkt perfect, maar alleen als ik zoals je in #1 heb kunnen lezen werkte mijn code met VENTILATIELUCHT ook, het probleem zit hem in de code van mijn formulier EXHAUST. de codes zijn identiek behalve de sheet verwijzing.
Dus met jouw code heb ik nog steeds dit probleem.
de werkende code
Code:
Private Sub butOpslaanalsxls_Click()

   Sheets("Ventilatielucht").Copy

   With ActiveWorkbook
      .Sheets(1).UsedRange = .Sheets(1).UsedRange.Value
      .Sheets(1).Name = "Ventilatielucht bewerkbaar"
      With Application.FileDialog(2)
          If .Show Then c00 = .SelectedItems(1)
      End With
     .SaveAs c00, 51
   End With

   Me.Hide
   
   'Deze macro maakt een saveas naar xls met 1 zelf gedefinieerde sheet
    
      
        'Sheets("Ventilatielucht").Copy Before:=Sheets(1)
        '    With ActiveSheet
        '    .Name = "Ventilatielucht bewerkbaar"
        '        With .Cells
        '        .Copy
        '        .PasteSpecial Paste:=xlPasteAll
        '        End With
         ''    .Move
       ' End With
        'filesavename = Application.GetSaveAsFilename( _
        'fileFilter:="Excel bestanden (*.xls), *.xls")

        'ActiveWorkbook.SaveAs Filename:=filesavename
        'Me.Hide
    
    
End Sub

de niet werkende code
Code:
Private Sub butOpslaanalsxls1_Click()
    'Deze macro maakt een saveas naar xls met 1 zelf gedefinieerde sheet
    
   Sheets("EXHAUST").Copy

   With ActiveWorkbook
      .Sheets(1).UsedRange = .Sheets(1).UsedRange.Value
      .Sheets(1).Name = "EXHAUST bewerkbaar"
      With Application.FileDialog(2)
          If .Show Then c00 = .SelectedItems(1)
      End With
     .SaveAs c00, 51
   End With

   Me.Hide
   
End Sub
 
Simpel: Option Explcit bovenin de codemodule verwijderen of 'uit commentaren': ( er een ' voor zetten)
 
Dank je SNB

Hier had ik dus nooit opgekomen. Ik kan weer verder en ga proberen mijn 1ste code weer terug te plaatsen omdat dat iets begrijpelijker is voor mij.

Groetjes Martin
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan