*

Help!

Problemen met uw pc? De vrijwilligers van oplossing.be zoeken gratis met u mee! 8)

Meer weten over Oplossing.be?

Hoe stel ik een vraag?

Recent

Auteur Topic: fout controle op dubbele tabbladen  (gelezen 1547 keer)

Offline strop2

  • Lid
  • *
  • Berichten: 24
  • Geslacht: Man
  • Oplossing.be
fout controle op dubbele tabbladen
« Gepost op: 08 april 2018, 09:30:38 »
Beste oplossers,
Heb een bestandje die ik gemaakt heb met de hulp aan informatie die hier te vinden is. Prachtig werk trouwens. \į/
Nu zit ik echter met een probleem bij het kopiŽren van tabblad1 en naamwijziging, bij een gelijke naam krijg ik geen foutmelding. Ik heb er al een controle ingevoerd maar deze schijnt niet te werken of staat op de verkeerde plaats. Zou er iemand zo vriendelijk willen zijn dit probleem eens te analyseren.

Offline lommer

  • Lid
  • *
  • Berichten: 89
  • Geslacht: Man
Re: fout controle op dubbele tabbladen
« Reactie #1 Gepost op: 08 april 2018, 11:45:10 »
Probeer dit eens.
   Sheets("aanvrager").Select
       
For i = 1 To Worksheets.Count
    If Worksheets(i).Name = Sheets(1).Range("B13") Then
        exists = True
        MsgBox ("De naam bestaat reeds")
    End If
Next i

If Not exists Then
    Sheets(1).Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Sheets(1).Range("B13")
End If
 
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 6

Offline strop2

  • Lid
  • *
  • Berichten: 24
  • Geslacht: Man
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #2 Gepost op: 08 april 2018, 12:19:32 »
Ok ik zal proberen iets duidelijker te zijn.
Tabblad aanvrager is eigenlijk een invulblad daarvan neem ik een kopie en maakt het een nieuw tabblad aan met de naam van de aanvrager. Als ik echter de naam vergeet te veranderen krijg ik "aanvrager2" wat niet de bedoeling is. Ik zou willen dat ik een foutmelding krijg indien er reeds een aanvrager is met die naam.
Indien je in excel een gelijke naam aan de tabbladen probeert te geven lukt dit ook niet en krijg je direct de foutmelding wat in een VBA -code niet zo is blijkbaar.
Het komt er op neer dat ik een verwittiging krijg dat ik een fout maak, met msgbox "naam bestaat reeds"

@ lommer

Dit is helaas ook niet de oplossing ik krijg nog steeds de foutmelding in mijn VBA dat de naam reeds bestaat. :(

Offline lommer

  • Lid
  • *
  • Berichten: 89
  • Geslacht: Man
Re: fout controle op dubbele tabbladen
« Reactie #3 Gepost op: 08 april 2018, 12:27:21 »
Hierbij het bestand, het is getest en werkte.
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 6

Offline RedHead

  • Ambassadeur
  • *****
  • Berichten: 1.754
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: fout controle op dubbele tabbladen
« Reactie #4 Gepost op: 08 april 2018, 15:45:23 »
Als je niet over al je sheets wilt lopen om de namen te controleren, kan het ook door juist gebruik te maken van het feit dat de code een fout genereert...
Hierbij een voorbeeld van hoe dat werkt....

Sub TestWat()
Dim WelkeSheet As String
    WelkeSheet = Application.InputBox("Geef een naam op voor de nieuwe sheet...", "Naam", , , , , , 2)
    MsgBox "De opgegeven sheet '" & WelkeSheet & "' bestaat " & IIf(BestaatSheet(WelkeSheet), "wel", "niet") & ".", vbOKOnly, WelkeSheet
   
End Sub

Function BestaatSheet(SheetNaam As String) As Boolean

   On Error Resume Next
   BestaatSheet = Not Worksheets(SheetNaam) Is Nothing

End Function
Roep de Sub aan in je workbook. Hiermee wordt de functie aangeroepen die dus test of de opgegeven naam bestaat. Dat resultaat wordt nu teruggegeven in een MsgBox, maar kan je natuurlijk ook gebruiken om direct een sheet aan te maken (of juist niet).
______________________________

Groet, Leo

Offline strop2

  • Lid
  • *
  • Berichten: 24
  • Geslacht: Man
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #5 Gepost op: 08 april 2018, 20:58:36 »
@lommer,
Het lukt inderdaad met je inbreng, waarvoor dank. Ik had het op de verkeerde plaats gezet.
Het onderbreekt echter niet de sub bij de foutmelding zodat ik toch eerst de naam kan (moet) veranderen voor het wegschrijft in het totaalblad.

@Redhead
Ik zou inderdaad eerst (verplicht) de naam kunnen inbrengen en dan verder doen. Ik ga deze nog even open houden indien ik er niet uit kom met het geen ik nu al heb.
Ik zit nog volop in een leerproces en wil dit stap voor stap doen.
Bedankt beide voor de inbreng.


Offline lommer

  • Lid
  • *
  • Berichten: 89
  • Geslacht: Man
Re: fout controle op dubbele tabbladen
« Reactie #6 Gepost op: 09 april 2018, 08:55:25 »
Met een exit sub onderbreek je de vba.
For i = 1 To Worksheets.Count
    If Worksheets(i).Name = Sheets(1).Range("B13") Then
        exists = True
        MsgBox ("De naam bestaat reeds")
        Sheets(1).Range("B13").Select
        Exit Sub
    End If
Next i
Standaard emailprogramma: Outlook Express
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 6

Offline alfa

  • Lid
  • *
  • Berichten: 62
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #7 Gepost op: 09 april 2018, 10:58:15 »
@strop2,
Het gedeelte onderaan in je macro 'Overzet' dat begint met "Dim AllSheets", wil je daarmee alleen bereiken dat het blad 'Totaal als pdf wordt opgeslagen, of ook nog andere dingen? Ik begrijp dat nl. niet zo goed.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline alfa

  • Lid
  • *
  • Berichten: 62
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #8 Gepost op: 09 april 2018, 19:57:19 »
Ik had de macro's van strop2 herschreven zodat ze goed functioneren, maar wilde alleen nog antwoord op de vraag in mijn bericht hierboven. Kennelijk heeft strop2 er geen behoefte meer aan.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline strop2

  • Lid
  • *
  • Berichten: 24
  • Geslacht: Man
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #9 Gepost op: 10 april 2018, 20:01:11 »
Aan de oplossers,
Ik was niet out off the topic, maar was niet in staat om eerder te reageren. Eerst en vooral mijn dank naar Lommer  \į/ toe met de aanpassing en hint kom ik er wel uit. Heb ondertussen nog enkele foutjes ontdekt.

@ alfa
Het is niet alleen totaal die naar pdf wordt opgeslagen maar ook de tabbladen die gecreŽerd worden door het invullen van het aanvraag (formulier)  tabblad.
Dat wil niet zeggen dat ik niks meer kan opsteken van de macro die je hebt herschreven. Zoals ik al eerder aangaf ik leer graag nog bij.
Dus als je zo vriendelijk zou willen zijn? :thumbsup:

Offline alfa

  • Lid
  • *
  • Berichten: 62
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #10 Gepost op: 11 april 2018, 08:17:33 »
Zie de bijlage.
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline strop2

  • Lid
  • *
  • Berichten: 24
  • Geslacht: Man
  • Oplossing.be
Re: fout controle op dubbele tabbladen
« Reactie #11 Gepost op: 11 april 2018, 16:32:59 »
Beste Alfa,
Dit is wel een totaal andere aanpak maar het werkt ook ( en vlotter). Ik zal dit proberen te gebruiken in mijn uiteindelijke werk.
Thanks
« Laatst bewerkt op: 11 april 2018, 16:40:07 door strop2 »

Offline Warme bakkertje

  • Lid
  • *
  • Berichten: 35
  • Geslacht: Man
Re: fout controle op dubbele tabbladen
« Reactie #12 Gepost op: 13 april 2018, 11:09:10 »
Geen loop nodig om te weten of een werkblad al bestaat.
With Sheets("Aanvrager")
    If Not Evaluate("isref(" & .Range("b13") & "!A1)") Then
        .Copy , Sheets(Sheets.Count)
        Else
        MsgBox "Een werkblad met deze naam bestaat al !": Exit Sub
    End If
End With
With ActiveSheet
    .Name = Sheets("Aanvrager").Range("b13")
    For Each sh In .Shapes
        sh.Delete
    Next sh
End With
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2601
MS-1795
Intel(R) HD Graphics 530 1024MB -
Intel(R) Display Audio
Nr: 1 Model: ST912082 1AS USB Device
Nr: 2 Model: HGST HTS721010A9E630
Nr: 3 Model: TOSHIBA THNSNJ128G8NY
C:\ NTFS 117,94GB 72,66GB 16 292MB

 


www.combell.com