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

Benoemen van tabblad

  • Onderwerp starter Onderwerp starter Mira2
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Mira2

Gebruiker
Lid geworden
6 dec 2009
Berichten
5
In heb een stukje VBA waarbij de naam van het tabblad genoemd wordt naar de waarde van een bepaalde cel in een ander tabblad (zie hierna). Doch wanneer een nieuw tabblad gemaakt wordt met dezelfde naam krijg ik een foutmelding.
Hoe kan ik in onderstaande VBA voorzien, wanneer de tabblad-naam reeds bestaat, dat de procedure gestopt wordt en gevraagd wordt om allereerst de waarde van de cel in tabblad 'Model' aan te passen ?

Public Sub Wegschrijven()
Sheets("Model").Select
Sheets("Model").Copy After:=Sheets(2)
ActiveSheet.Tab.Color = 255
ActiveSheet.Name = Sheets(1).Range("d14").Value
ActiveWorkbook.Save
End Sub

Alvast bedankt
 
Mira , welkom op he forum in deze topic heb ik gebruik gemaakt van een functie die kijkt of een tabblad reeds bestaat , kijk in de vb editor daar in de module " nieuw_blad"
 
Probeer dit.
Als D14 in blad1 overeenkomt met een reeds bestaande naam v.e. blad
of als er in D14 niets staat, wordt naar een nieuwe naam gevraagd.
Code:
Sub Wegschrijven()
Dim sh As Integer
For sh = 1 To Sheets.Count
With Sheets(1)
If Sheets(sh).Name = .Range("d14").Value Or .Range("d14").Value = "" Then
.Range("d14") = InputBox("Wat moet de naam van het nieuwe werkblad" & Chr(10) & _
"en van D14 in blad1 worden?")
End If
End With
Next sh
Sheets("Blad2").Copy After:=Sheets(2)
With ActiveSheet
.Tab.Color = 255
.Name = Sheets(1).Range("d14").Value
End With
ThisWorkbook.Save
End Sub
 
Laatst bewerkt:
Beste zapatr ;)

Probeer dit.
Als B14 in blad1 overeenkomt met een reeds bestaande naam v.e. blad
of als er in B14 niets staat, wordt naar een nieuwe naam gevraagd.

Het moet wel D14 zijn ipv B14

Groetjes Danny. :thumb:
 
Beste Zapatr

De code blijkt niet te werken wanneer er reeds een tabblad met dezelfde naam bestaat als in veld D14 van tabblad 1.
De procedure stopt dan bij :
.Name = Sheets(1).Range("d14").Value

Wanneer veld D14 van tabblad1 blanco is werkt het wel perfect


Alvast bedankt voor uw hulp.
 
Beste Zapatr
De code blijkt niet te werken wanneer er reeds een tabblad met dezelfde naam bestaat als in veld D14 van tabblad 1. De procedure stopt dan bij :
.Name = Sheets(1).Range("d14").Value
Wanneer veld D14 van tabblad1 blanco is werkt het wel perfect.
De macro moet het echt goed doen hoor, ik heb het nog eens gecontroleerd.
En zoals je in de reactie van Danny kunt lezen: bij hem werkt hij ook (hij heeft er geen wijzigingen in aangebracht).
Post je bestand anders is hier op het forum, dan kunnen we er naar kijken.
 
Code:
Public Sub Wegschrijven()
  on error resume next
  Sheets("Model").Copy ,Sheets(2)
  With sheets(sheets.count)
      .Tab.Color = 255
      .Name = Sheets("Model").Range("d14")
      c0=.name
  End with
  ActiveWorkbook.Save
  if err.number>0 then msgbox "Pas nog even de naam van werkblad " & c0 & " aan"
End Sub
 
Mira wijzig je macro met deze
Code:
Sub Wegschrijven()
Dim sh As Integer
For sh = 1 To Sheets.Count
With Sheets(1)
If Sheets(sh).Name = .Range("d14").Value Or .Range("d14").Value = "" Then
.Range("d14") = InputBox("Wat moet de naam van het nieuwe werkblad" & Chr(10) & _
"en van B14 in blad1 worden?")
End If
End With
Next sh
Sheets[COLOR="Red"](1).[/COLOR]Copy After:=Sheets(2)
With ActiveSheet
.Tab.Color = 255
.Name = Sheets(1).Range("d14").Value
[COLOR="red"].Shapes("Button 2").Cut[/COLOR]
End With
'ThisWorkbook.Save
End Sub
 
Laatst bewerkt:
Beste Trucker 10

De procedure stopt nog steeds bij
.Name = Sheets(1).Range("d14").Value
wanneer van het nummer in cel D14 (in het tabblad Faktuur) reeds een tabblad bestaat

Alvast bedankt voor jullie hulp
 
Ik heb de macro werkend gemaakt en heb het daarbij gelaten want het was al laat (vroeg).
Het kan allemaal veel mooier, da's voor de liefhebbers.
Je moet eigenlijk ook nog wat toevoegen om - als bij het invoeren van het factuurnummer
op Annuleren wordt geklikt - dat op te vangen.
Het ging me er nu om om de macro zijn werk te laten doen.
De macro had moeite met de factuurnummers (er was geen probleem als het tekst was).
Let er op dat de werkbladnaam, bv. Sheets("Faktuurnummer") tussen apostrofs moet,
daarin was je niet consequent.
Ik raad je aan om - nadat je een factuur hebt gemaakt - de variabele gegevens in het blad
Faktuur te wissen.
Faktuur moet overigens offcieel met een c, jij gebruikt steeds een k. Dat is niet erg, als je
daar dan maar consequent in bent (ik had zelf in de macro een c gebruikt en heb daarna
30 minuten moeten zoeken om die fout te vinden).
Succes er mee!
 
Laatst bewerkt:
@Zapatr
Aangezien ik er al mee bezig was voor jij geantwoord had, en ik bij het posten van mijn oplossing op dat uur geen ander antwoord verwachtte heeft TS een dubbel antwoord.
Nu eentje met code bij annuleren
 

Bijlagen

Behalve dat je in vergelijking met mijn oplossing de Ranges hebt vervangen door vierkante
haken en de variabele 'naam' achterwege laat, zie ik weinig verschil met mijn benadering.

@ zapatr , ik ben er zeer zeker van dat rudi ( warme bakkertje ) niet moet vergelijken met iemand zijn oplossing om tot een daadwerkelijke oplossing te komen , waar wij struikelen gaat rudi nog steeds verder en maakt het geheel .
 
Aan allen die mee geholpen hebben aan het uitwerken van een aanvaardbare en werkende oplossing : heel erg bedankt.
Mira
 
Aan allen die mee geholpen hebben aan het uitwerken van een aanvaardbare en werkende oplossing : heel erg bedankt.
Mira

Gaarne dan de vraag op opgelost zetten (rechts onderaan op de pagina).
Bvd.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan