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

alle bladen aanspreken in een macro

Status
Niet open voor verdere reacties.

blackdragon1985

Gebruiker
Lid geworden
5 aug 2010
Berichten
8
ik heb een macro die voor hij opslaat een aantal cellen veranderd. nu doet ie dat alleen op het blad waar ik op dat moment ben en niet in de andere mappen. hoe kan ik dit oplossen?

de macro is alsvolgt:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For Each sh In Workbook
For Each c In Range("H2:H200")
If IsDate(c) Then Cells(c.Row, c.Column) = Cells(c.Row, c.Column)
Next
Next
End Sub


waar nu Workbook staat stond eerst Worksheets. dat had ik al veranderd, maar dat werkte niet.

bvd.
 
De macro lijkt me niet echt zinvol. Je stelt Cells(c.Row, c.Column) gelijk aan zichzelf.
Zou het niet iets in deze aard moeten zijn?
Code:
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Worksheets
        For Each c In sh.Range("H2:H200")
            If sh.Cells(c.Row, 2) <> "" Then
                sh.Cells(c.Row, 1) = Now()
            End If
        Next
    Next
 
Het is juist die 2de macro die niet zinvol is, want hij past bij elke opslag vh bestand de datum opnieuw aan.
Wat die eerste macro doet is de datums in kolom H vastzetten. Die datums zijn verkregen midddels een formule.
Bij een wijziging van bv kolom G wordt de datum in kolom H ingevuld De macro doet in feite een copy/paste van deze datum en zo staat deze vast(want de formule is vervangen door de datum).
Een cel met formule is niet leeg dus in de tweede macro krijg je voor elke cel in kolom H een datum ingevuld en dat is niet de bedoeling.

Cobbe
 
dit werkt ook niet. ik heb even het excel bestand erbij gezet.
als je in cel G een 'x' zet dan kom H de tijd en datum te staan.
en die moet dan voor eeuwig blijven. het probleem was namelijk dat als ik de macro opnieuw startte de tijd weer werd aangepast. met de macro die ik er nu in heb staan werkt het wel, maar alleen voor het Blad waar ik op dat moment aan het werk ben. en niet op de andere bladen. en dat moet ie eigenlijk wel gaan doen.
 

Bijlagen

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    For Each sh In Sheets
        For Each c In sh.Range("H2:H200")
            If IsDate(c) Then c.Value = c.Value
        Next c
    Next sh
End Sub
 
Sorry, Cobbe, maar uit de vraag heb ik niet kunnen opmaken dat die cel een datum in formulevorm bevatte.
Uiteraard heb je volledig gelijk. Belangrijk was echter vooral
For Each c In sh.Range("H2:H200")

Ondertussen heeft Warme bakkertje de bal binnen geschopt. :p
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan