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

Formules herberekenen gehele sheet na VBA toevoeging

Status
Niet open voor verdere reacties.

skystormer

Gebruiker
Lid geworden
8 mrt 2011
Berichten
196
Dag Mensen,

Ik heb dankzij SNB een macro in gebruik welke er voor zorgt dat een extra tabblad wordt toegevoegd na een bepaalde handeling. Dit tabblad is een excel bestand welke opgeslagen staat op een andere locatie.
Nu heb ik in dit andere bestand een standaard formule staan welke verwijst naar het eerste tabblad van het bestand waar deze aan komt te hangen.

Simpele formules als:

=Meetrapport!L6 welke als resultaat geeft: #VERW! . Wat logisch is omdat in dit bestand dit tabblad niet bestaat.
Echter in het nieuwe bestand bestaat dit tabblad wel. Echter de formule blijft resulteren in #VERW!. (totdat ik handmatig op de cel ga staan, een keer op F2 en enter druk)
Hoe kan ik met behulp van de bestaande code ook alle formules op een tabblad laten herberekenen?

Code die ik gebruik:

Code:
Sub M_snb()
    If Blad1.CheckBoxes(Application.Caller) = 1 Then
        Sheets.Add(, Sheets(Sheets.Count), , "Z:\Tijdelijk\" & Application.Caller & ".xlsx").Name = Application.Caller
        'Deze code bepaald in welke map het bestand staat dat als tabblad toegevoegd moet worden'
        'Application.Caller staat voor de naam van het object welke de macro uitvoert'
        Application.Goto Blad1.Cells(1)
    Else
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets(Application.Caller).Delete
    End If
End Sub

Dank voor jullie tijd.
 
als je F9 drukt, is het dan al OK ?
Anders volstaat een eenvoudige "calculate" toe te voegen aan je macro.
 
Helaas werken die beide opties niet.

F9 geen resultaat.

Code:
Sub M_snb()
    If Blad1.CheckBoxes(Application.Caller) = 1 Then
        Sheets.Add(, Sheets(Sheets.Count), , "Z:\Tijdelijk\" & Application.Caller & ".xlsx").Name = Application.Caller
        Calculate
        'Deze code bepaald in welke map het bestand staat dat als tabblad toegevoegd moet worden'
        'Application.Caller staat voor de naam van het object welke de macro uitvoert'
        Application.Goto Blad1.Cells(1)
    Else
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets(Application.Caller).Delete
    End If
End Sub

Toegevoegde calculate maakt geen verschil.
 
Ik heb een excel bestand toegevoegd.

In kolom R heb ik 4 selectievakjes zitten. Waarvan er aan 3 een macro hangen.

Code:
Sub M_snb()
    If Blad1.CheckBoxes(Application.Caller) = 1 Then
        Sheets.Add(, Sheets(Sheets.Count), , "Z:\Tijdelijk\" & Application.Caller & ".xlsx").Name = Application.Caller
        'Deze code bepaald in welke map het bestand staat dat als tabblad toegevoegd moet worden'
        'Application.Caller staat voor de naam van het object welke de macro uitvoert'
        Application.Goto Blad1.Cells(1)
    Else
        On Error Resume Next
        Application.DisplayAlerts = False
        Sheets(Application.Caller).Delete
    End If
End Sub

Deze macro zorgt voor:
Aan de hand van de naam van het selectievakje wordt in de opgegeven map een Excel bestand gezocht met diezelfde naam. Deze wordt toegevoegd als sheet aan het originele bestand. En door het vinkje weer te verwijderen wordt deze sheet weer verwijderd. (bovenste selectievakje heeft geen macro, en zal er ook geen krijgen)

In de tabbladen welke worden toegevoegd, hangen formules welke verwijzen naar het hooftabblad (Meetrapport) Echter deze formules moeten herberekend worden omdat het origineel een formule bevatte met een niet geldig verwijzing. Echter door het toevoegen is dit wel een geldige verwijzing geworden.
Simpelweg met F2 + enter opgelost.
Er kunnen dus 3 verschillende werkbladen zijn toegevoegd. Opnemen met macro werkt in deze niet, omdat niet alle werkbladen altijd aanwezig zullen zijn en dus foutmeldingen zal gaan geven op het moment er een bepaald werkblad niet bestaat.
 

Bijlagen

Momenteel opgelost dmv alle tabbladen een macro op te nemen die deze actie uitvoert.
En deze gehangen aan een macro welke on error resume next kiest .
En zo mbv "Call" de verschillende openomen macro's langsgaat van de diverse tabbladen.
Deze vervolgens aan een aparte knop gehangen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan