Excel macro werkt prima stap voor stap in debug mode, maar niet in running mode

Status
Niet open voor verdere reacties.

Tvhouwel

Gebruiker
Lid geworden
2 apr 2002
Berichten
258
Ik ben een beginner in Excel, macro's
Ik wil het volgende uit laten voeren door een macro
Het huidige tabblad openen als nieuwe file > iets erin wijzigen > filenaam aanpassen > saven > in de originele file enkele cellen leegmaken
Onderstaande code gebruik ik daarvoor.
Probleem is dat de code perfect werkt stapsgewijs in de debug mode, maar een foutmelding geeft als ik hem run
De foutmelding is "Deze eigenschap of methode wordt niet ondersteund door dit object"

Het gaat om de volgende code

Code:
Sub FaktuurOpslaan()
        Sheets("Faktuur").Copy
        
        'beveiliging eraf
        ActiveSheet.Unprotect
        
        'buttons verwijderen
        ActiveSheet.Shapes.Range(Array("Button 1")).Select
        Selection.Delete
        ActiveSheet.Shapes.Range(Array("Button 2")).Select
        Selection.Delete
        
        mySaveDir = Range("C31")
        mySaveTijd = Format(Date, "yymmdd") & "_" & Format(Time, "hhmm")
        mySaveNaam = Range("C5")
        myfilenaam = mySaveDir & "\Faktuur " & mySaveTijd & " " & mySaveNaam & ".xlsm"
        ActiveWorkbook.SaveAs Filename:=myfilenaam, FileFormat:=xlOpenXMLWorkbookMacroEnabled
        MsgBox "Bestand is opgeslagen als " & myfilenaam
        ActiveWorkbook.Close
        
        'Worksheets(FaktuurOfferteOrigineel).Select
        Sheets("Faktuur").Select
        Range("A1").Select

        'En weer even het origineel leegmaken
        Sheets("Faktuur").Select
        Range("A1").Select
        Range("C5:D8").Select
        Selection.ClearContents
        Range("C10:E11").Select
        Selection.ClearContents
        Range("C13").Select
        Selection.ClearContents
        Range("C15:C16").Select
        Selection.ClearContents
        Range("C19").Select
        Selection.ClearContents
        Range("A1").Select
        
End Sub

Als ik
'Worksheets(FaktuurOfferteOrigineel).Select
aanzet dan krijg ik in de debug mode dezelfde foutmelding

Het heeft denk ik te maken met het aktief maken van de eerste file, vanwege het kopieren en saven onder een andere naam is excel daar uit geweest en na terugkeer krijg ik het tabblad niet meer echt aktief.
Van alles geprobeerd en een paar uur naar oplossingen gezocht op internet maar ik krijg het niet gevonden.
Wat doe ik fout ?
 
Eerste gezicht reactie ;)

Zet de naam van het werkblad eens tussen aanhalingstekens. Dus zo:
Code:
Worksheets("FaktuurOfferteOrigineel").Select

Zoals je het nu hebt wordt het als een variabele gezien en die is uiteraard niet bekend.
 
Naam tussen aanhalingstekens heb ik uitgeprobeerd, wel een andere foutmelding, nu is het
"het subscript valt buiten het bereik"
 
Dan kun je beter je document hier even plaatsen als dat privacytechnisch mogelijk is.
 
Fijn dat je even mee wilt denken, ik stuur het bestand mee.
Het gaat dus om tabblad "Faktuur", en de macro zit achter de knop "Faktuur opslaan"
Wel even een directory invullen in cel C31

Bekijk bijlage FaktuurOfferteOrigineel.xlsm

Helaas, het lijkt ongeïnteresseerd, maar dat is het zeker niet, ik ben vanavond verder niet in de gelegenheid om te antwoorden.
Morgenochtend kan ik pas weer verder
 
Geen probleem :)

Maar haal deze regel eruit:
Code:
Worksheets("FaktuurOfferteOrigineel").Select
 
...Maar haal deze regel eruit:
Code:
Worksheets("FaktuurOfferteOrigineel").Select
Heb ik voor alle zekerheid nog even gedaan, maar dat geeft de foutmelding zoals in de beginpost, daar stond die regel nl met een apastrophe ervoor.
 
Je document werkt bij mij prima zonder die regel. Hij maakt een nieuw document aan en keert dan terug in het origineel.
Maar wijzig het stuk onder ActiveWorkbook.Close eens in dit:

Code:
        'En weer even het origineel leegmaken
        Sheets("Faktuur").Select
        Set r = Range("C5:D8")
        r.ClearContents

De variabele r dient dan geclareerd te zijn als range:
Code:
Dim r As Range
 
Laatst bewerkt:
Apart dat hij het bij jou wel deed, maar, je opmerkingen daaronder hielpen bij mij wel.
Probleem is opgelost hij loopt nu ook gewoon door en het originele doc wordt leeggemaakt.

Hartelijk bedankt voor de hulp
 
Ja, vind ik ook vreemd. Bij mij thuis werkte het goed maar op kantoor kreeg ik dezelfde fout en heb dat dus op genoemde manier opgelost.
 
Code:
Sub M_snb()
  With Sheets("Faktuur")
    .Copy
    with ActiveWorkbook
       with .Sheets(1)
         .Unprotect
         .oleobjects.delete
         .Parent.saveas .cells(31,3) & Format(now, "yymmdd_hhmm") & .cells(5,3) & ".xlsm",52
         .parent.Close
        end with
    end with

    .Range("C5:D8,C10:E11,C13,C15:C16,C19").ClearContents
  end with
End Sub
 
Laatst bewerkt:
Bedankt voor bovenstaande, ik zal er eens op gaan studeren want er staan wat dingen die helemaal nieuw zijn voor me.
Maar.... nooit te oud om te leren;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan