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

Celselectie na macro

Status
Niet open voor verdere reacties.

Wampie Beukies

Gebruiker
Lid geworden
7 sep 2009
Berichten
88
Hallo,

Ik heb de onderstaande code, die goed werkt. Wat ik alleen niet snap en wat ik graag anders wil, zoals ik ook via vba probeer te bereiken, is dat na uitvoering het nieuwe bestand geactiveerd staat. De macro eindigt echter door 'Verlofplanning.xlsm' te activeren op blad 'Februari' cel B3.
Kan iemand mij uitleggen wat hier misgaat?

Code:
Sub Opslaan()
'
' Opslaan Macro
'

    Application.ScreenUpdating = False
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Sheets("Verlofkaart").Activate
        With Sheets("Verlofkaart")
        If Dir("E:\Scauting\Planning\" & (.Range("AI1") & "\" & "Ambulanten" & "\" & (.Range("AJ1")) & ".xlsx")) <> "" Then
            MsgBox "Voor dit kalenderjaar bestaat al een bestand voor deze ambulant!"
            Exit Sub
        End If
        End With
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Application.DisplayAlerts = False
    Dim isOpen As Boolean
    isOpen = IsBookOpen("Verlofplanning.xlsm")
        If isOpen = True Then
         Workbooks("Verlofplanning.XLSM").Close SaveChanges:=True
        End If
    Windows("'Nieuwe ambulant'.xlsm").Activate
        With Sheets("Verlofkaart")
            Workbooks.Open Filename:="E:\Scauting\Planning\" & (.Range("AI1")) & "\Verlofplanning.xlsm", _
            UpdateLinks:=3
        End With
    Windows("Verlofplanning.xlsm").Activate
    Application.Run "Verlofplanning.xlsm!Unprotect"
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Sheets("Verlofkaart").Unprotect
    Sheets("Verlofkaart").Copy After:=Workbooks("Verlofplanning.xlsm").Sheets(2)
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Range("A1:AH36").Copy
    Windows("Verlofplanning.xlsm").Activate
    Range("A1:AH36").Select
    ActiveSheet.Paste Link:=True
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Range("AI1:AM9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Verlofplanning.xlsm").Activate
    Range("AI1:AM9").Select
    ActiveSheet.Paste Link:=True
    Sheets("Verlofkaart").Select
    ActiveSheet.Name = Range("AJ1").Value
    Range("AJ1").ClearComments
    ActiveSheet.Shapes.Range(Array("Button 1")).Delete
    ActiveSheet.Protect
    ActiveSheet.Visible = False
    Workbooks("Verlofplanning.XLSM").Save
    Windows("'Nieuwe ambulant'.xlsm").Activate
    Sheets("Verlofkaart").Unprotect
    Range("AJ1").ClearComments
    ActiveSheet.Shapes.Range(Array("Button 1")).Delete
    Application.DisplayAlerts = True
        With Sheets("Verlofkaart")
            ActiveWorkbook.SaveAs Filename:="E:\Scauting\Planning\" & (.Range("AI1") & "\" & "Ambulanten" & "\" & (.Range("AJ1")) & ".xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        End With
    ActiveSheet.Protect
    Sheets("Verlofkaart").Select
    Range("AK5").Select
    Application.ScreenUpdating = True
     
End Sub
 
verwijder
Sheets("Verlofkaart").Select
Range("AK5").Select
 
Die had ik er pas in tweede instantie geplaatst, maar verwijderen noch plaatsen heeft invloed.
Sheets("Verlofkaart").Select is sowieso overbodig, dus die heb ik er tussenuit gehaald, maar het resultaat blijft hetzelfde.
 
Laatst bewerkt:
Totaal onleesbare code. Alle Selects en Activates zijn overbodig. Het is niet te volgen vanuit welk bestand je de code start. Waarom al met protect en unprotect aan de gang als de basis nog niet eens werkt?
 
Totaal onleesbare code. Alle Selects en Activates zijn overbodig. Het is niet te volgen vanuit welk bestand je de code start. Waarom al met protect en unprotect aan de gang als de basis nog niet eens werkt?

Zoals aangegeven, werkt de code perfect, behalve de celselectie aan het eind. De activates zijn nodig omdat meerdere geopende bestanden gelijk genaamde tabbladen hebben. Of zie jij daar een andere oplossing voor?
 
Laatst bewerkt:
Als de code perfect werkt en je begrijpt het ook dan had je de vraag toch niet hoeven stellen?

Vanuit welk bestand start je de code?
In elke map staat 'Nieuwe ambulant'.xlsm"'
Waar is de Function IsBookOpen te vinden?
Waarom plaats je geen voorbeeldbestanden?
 
Als de code perfect werkt en je begrijpt het ook dan had je de vraag toch niet hoeven stellen?
Zoals aangegeven, werkt de code perfect, behalve de celselectie aan het eind.
De enige echte puzzel die ik nog heb is, waarom er een cel geselecteerd wordt die nergens genoemd wordt, buiten de actieve map

Vanuit welk bestand start je de code?
Ik heb 2 basisbestanden: Ambulantenplanning.xlsm in de hoofdmap 'Planning' en Verlofplanning.xlsx in iedere submap van de verschillende jaren.
Vanuit Ambulantenplanning.xlsm wordt eerst via een macro een bestand 'Nieuwe Ambulant' aangemaakt waarin vervolgens een naam van een medewerker gekozen wordt voordat de macro 'Opslaan' geactiveerd wordt. Deze macro's bevinden zich in de 'Ambulantenplanning'.

In elke map staat 'Nieuwe ambulant'.xlsm"'
Nee, in elke jaarmap staat een bestand 'Verlofplanning' en hier komen in een submap 'ambulanten' de bestanden van de verschillende werknemers.
Het bestand 'Nieuwe ambulant' wordt gemaakt op basis van tabbladen uit het bestand 'Ambulantenplanning'. Deze bladen komen dus in meerdere geopende bestanden voor.

Waar is de Function IsBookOpen te vinden?
Deze staat in 'Ambulantenplanning'.

Waarom plaats je geen voorbeeldbestanden?
Dit heb ik geprobeerd met 'Ambulantenplanning' omdat daar alle code in staat, maar dat resulteert in een foutmelding. Waarschijnlijk is het bestand te groot?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan