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

meerdere macro's op verschillende werkbladen tegelijkertijd starten

Status
Niet open voor verdere reacties.

herus

Gebruiker
Lid geworden
2 mrt 2012
Berichten
6
Ik heb een excel werkboek gemaakt met daarin 30 werkbladen. Al deze 30 werkbladen moeten door 2 macro bewerkt worden en dat lukt me niet.

de eerste macro

Sub verbergen()
Dim r As Integer, tot As Integer
tot = Range("A16").CurrentRegion.Rows.Count + 15
For r = 16 To tot
If Cells(r, 1) = "" Then _
Rows(r).Hidden = True
Next r
End Sub

werkt goed per tabblad.

de tweede
Sub RenameTabsHandlingNulls()

For i = 1 To Sheets.Count
If Worksheets(i).Range("D1").Value <> "" Then
Sheets(i).Name = Worksheets(i).Range("D1").Value
Else:
Sheets(i).Name = "Default (" & i & ")"
End If
Next
End Sub

werkt wel in een keer voor alle tabbladen
Hoe kan ik deze twee combineren in een macro zodat alles in een keer gebeurd???
 
Door de eerste macro aan te roepen in je tweede macro misschien?


Code:
Sub RenameTabsHandlingNulls()

 For i = 1 To Sheets.Count
 If Worksheets(i).Range("D1").Value <> "" Then
 Sheets(i).Name = Worksheets(i).Range("D1").Value
 Else:
 Sheets(i).Name = "Default (" & i & ")"
 End If
[COLOR="#FF0000"]'eerste code uitvoeren
      Verbergen[/COLOR]
 Next
 End Sub
 
Door de eerste macro aan te roepen in je tweede macro misschien?


Code:
Sub RenameTabsHandlingNulls()

 For i = 1 To Sheets.Count
 If Worksheets(i).Range("D1").Value <> "" Then
 Sheets(i).Name = Worksheets(i).Range("D1").Value
 Else:
 Sheets(i).Name = "Default (" & i & ")"
 End If
[COLOR="#FF0000"]'eerste code uitvoeren
      Verbergen[/COLOR]
 Next
 End Sub

Beste Cobbe, gelijk geprobeerd alle tabs worden aangepast (Sub RenameTabsHandlingNulls( werkt dus goed ) echter alleen in het eerste tabblad wordt het tweede gedeelte "code verbergen" uitgevoerd.

groet henk
 
Dan moet je wellicht de eerste macro aanroepen direct aan het begin van je code:

Code:
Sub RenameTabsHandlingNulls()

 For i = 1 To Sheets.Count
 'eerste code uitvoeren
      Verbergen
 If Worksheets(i).Range("D1").Value <> "" Then
 Sheets(i).Name = Worksheets(i).Range("D1").Value
 Else:
 Sheets(i).Name = "Default (" & i & ")"
 End If
 Next
 End Sub
 
Als het nog niet zou werken kan je de eerste code verwerken in de tweede:

Code:
 Sub RenameTabsHandlingNulls()

 For i = 1 To Sheets.Count
 [COLOR="#FF0000"]'eerste code uitvoeren
      With sheets(i) 
     tot = .Range("A16").CurrentRegion.Rows.Count + 15
        For r = 16 To tot
           If .Cells(r, 1) = "" Then .Rows(r).Hidden = True
        Next r
End with[/COLOR]
If Worksheets(i).Range("D1").Value <> "" Then
 Sheets(i).Name = Worksheets(i).Range("D1").Value
 Else:
 Sheets(i).Name = "Default (" & i & ")"
 End If
 Next
 End Sub
 
Beste Cobbe, dit ingevoerd

Sub RenameTabsHandlingNulls()

For i = 1 To Sheets.Count

Dim r As Integer, tot As Integer
tot = Range("A16").CurrentRegion.Rows.Count + 15
For r = 16 To tot
If Cells(r, 1) = "" Then _
Rows(r).Hidden = True
Next r

If Worksheets(i).Range("D1").Value <> "" Then
Sheets(i).Name = Worksheets(i).Range("D1").Value
Else:
Sheets(i).Name = "Default (" & i & ")"
End If
Next
End Sub

maar de werking blijft steeds hetzelfde. (tabbladen worden allemaal aangepast en de regels alleen op het eerste werkblad verwijderd)

ps het End with (in rood bij jouw) accepteert de compiler niet
 
Laatst bewerkt:
Je hebt de code niet correct overgenomen en dan accepteert hij de End With niet.

Code:
Sub RenameTabsHandlingNulls()

 For i = 1 To Sheets.Count
 'eerste code uitvoeren
   With sheets(i) 
           tot = .Range("A16").CurrentRegion.Rows.Count + 15
              For r = 16 To tot
                  If .Cells(r, 1) = "" Then .Rows(r).Hidden = True
              Next r
    
     If .Range("D1").Value <> "" Then
        .Name = Worksheets(i).Range("D1").Value
  Else:
        .Name = "Default (" & i & ")"
    End If
 End with
 Next
 End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan