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

VBA nieuwe sheet

Status
Niet open voor verdere reacties.

ivoexcel

Gebruiker
Lid geworden
23 nov 2018
Berichten
100
Hallo alle,

Ik heb een macro in mijn Excel bestand gemaakt die in een Aray gegevens ophaalt uit verschillende Sheets. Wanneer een nieuwe sheet wordt aangemaakt zit deze niet in de aray en wordt deze dus niet mee genomen.

Is het mogelijk in de macro te contoleren op ''onbekende sheets'' dus de nieuwe en dan een melding te geven.


HTML:
For Each sh In Sheets(Array("Blad1", "Blad2", "Blad3", "Blad4"))

Dit is de aray blad5 en blad6 worden niet meegenomen in de aray maar zijn wel bekend.

Alvast bedankt!
 
En dan? Dan moet je de code aanpassen? Lijkt mij geen constitutieve manier van programmeren. Maar goed zo kan het.

Code:
Sub VenA()
  ar = Array("Blad1", "Blad2", "Blad3", "Blad4")
  For Each sh In Sheets
    If IsError(Application.Match(sh.Name, ar, 0)) Then c00 = c00 & sh.Name & vbLf
  Next sh
  MsgBox c00
End Sub
 
Kan dit ook met als er geen nieuwe bladen zijn dan start marcro anders messagebox ?
 
Ja dat kan. Kijk in de lokalen variabelen maar eens welke waarde c00 dan krijgt.
 
Code:
Sub VenA()
   ar = Array("Blad1", "Blad2", "Blad3", "Blad4")
   For Each sh In Sheets
      If IsError(Application.Match(sh.Name, ar, 0)) Then c00 = c00 & sh.Name & vbLf
   Next sh
   If Len(c) Then
      MsgBox c00
   Else
      StartMacro
   End If
End Sub

Sub StartMacro()
   MsgBox "nu ben je in de startmacro"
End Sub
 
Hartelijk dank cow18 . Hier was is zelf nooit opgekomen. Maaaaar ik heb nog een vraagje....:)
 
@VenA, allez toch, begin van dementie ?
Je vraagje, je maakt me nieuwsgierig
 
@cow18, Last van dementie hebben aan iemand vragen die last van dementie heeft? Tenzij bewust zal altijd de macro 'StartMacro' gestart worden. En heeft de TS toch nog iets om over na te denken.
 
Bedankt voor jullie hulp. Ik ben ermee zitten vogelen maar kwam er toch niet uit.

Het gaf me wel idee voor het volgende wat werkt !

HTML:
Sub test()
    Dim ws As Worksheet
    Dim ArrayOne() As Variant
    Dim wsName As Variant
    Dim Matched As Boolean

    ArrayOne = Array("Test1", "Test2")

    For Each ws In ThisWorkbook.Worksheets
        Matched = False
        For Each wsName In ArrayOne
            If wsName = ws.Name Then
                Matched = True
                Exit For
            End If
        Next
        If Not Matched Then
            MsgBox ("Deze betstaat niet")
            Exit Sub
        End If
    Next ws
            MsgBox ("start macro")
End Sub
 
Deze voldoet volgens mij niet aan de initiele vraag naar nieuwe onbekende werkbladnamen.
De macro stopt bij de eerste de beste werkbladnaam, die ook voorkomt in ArrayOne.
Bovendien is hij hoofdlettergevoelig en maakt hij onderscheid tussen Test1, test1, TEST1, tEsT1, etc
 
't is allemaal wat.
Code:
Sub VenA()
  ar = Array("Blad1", "Blad2", "Blad3", "Blad4")
  For Each sh In Sheets
    If IsError(Application.Match(sh.Name, ar, 0)) Then c00 = c00 & sh.Name & vbLf
  Next sh
  if len(c00) then MsgBox c00
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan