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

Add Sheet VBA

Status
Niet open voor verdere reacties.

Cmwdekorte

Gebruiker
Lid geworden
11 feb 2015
Berichten
21
Goedemorgen,

Graag wil ik het volgende: 'Een 'template sheet' kopiëren en deze hernoemen naar de cel die ik geselecteerd heb.'

Dus de bedoeling is dat ik een cel selecteer, daarna druk ik op de knop zodat de macro zijn ding doet en er dus een nieuwe (template) sheet ontstaat die de naam krijgt van de huidige cel die ik geselecteerd heb.

De code die ik tot nu toe heb is

Code:
Sub Add_Cargo()

Dim MyCell As Range, MyRange As Range

Set MyCell = ActiveCell.Value

Sheets("Template").Copy after:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
Sheets(Sheets.Count).Range("B3") = Sheets(Sheets.Count).Name 'Adds Cargo name to Table

End Sub

Maar deze werkt niet, iemand tips?

Met vriendelijke groet,

Christian
 
Test het zo eens.

Code:
Sub Add_Cargo()

Dim MyCell As Range, MyRange As Range

'Set MyCell = ActiveCell.Value

Sheets("Template").Copy after:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = Range("B3") 'MyCell.Value ' renames the new worksheet
'Sheets(Sheets.Count).Range("B3") = Sheets(Sheets.Count).Name 'Adds Cargo name to Table

End Sub
 
Gewoon de zaken eruit halen die de fout veroorzaken.

Code:
Sub Add_Cargo()
 Sheets("Template").Copy after:=Sheets(Sheets.Count) 'creates a new worksheet
 Sheets(Sheets.Count).Name = ActiveCell.Value ' renames the new worksheet
 Sheets(Sheets.Count).Range("B3") = Sheets(Sheets.Count).Name 'Adds Cargo name to Table
End Sub
 
Test het zo eens.

Dit werkt helaas ook niet.

Gewoon de zaken eruit halen die de fout veroorzaken.

Zo had ik hem eerst, maar dan zegt die dat je niks geselecteerd hebt, ik vermoed dat dit komt doordat je de nieuwe sheet aangemaakt hebt en deze dus actief is.


Ik wil wel graag het bestand delen alleen deze is te groot. Als het helpt kan ik deze mailen.
bij de sheet 'Cargo' moet de cel waarin hallo staat geselecteerd worden en dan op Add Cargo gedrukt worden waardoor de sheet ontstaat.

Mvg,

Christian
 
en zo?

Code:
[CODE]Sub Add_Cargo()

Dim MyCell As Range, MyRange As Range

Set MyCell = ActiveCell

Sheets("Template").Copy after:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
Sheets(Sheets.Count).Range("B3") = Sheets(Sheets.Count).Name 'Adds Cargo name to Table

End Sub
[/CODE]
 
Met deze code maakt hij wel een sheet aan, maar geeft er nog niet de juiste naam aan. nu heet die 'Template (2)'

Dit is al het begin natuurlijk, het probleem is nu nog de naam :S

Mvg,

Christian
 
Hij doet het bij mij wel, alleen zet hij de naam ook 2x in het blad.
Ik heb op Blad1 de cel geselecteerd waar de nieuwe bladnaam staat.
Test mijn bestandje even.
 

Bijlagen

Ik zie het ja, raar dat dat bij mij niet werkt dan?

Ik denk dat het eraan ligt dat ik de naam van de sheet (de geselecteerde cel) op de 'cargo' sheet heb staan en dat er een andere sheet gekopieerd wordt, de template sheet. dat betekend dat de naam dus niet voorkomt op de nieuwe sheet die de naam zou moeten krijgen. De verwijzing moet dus naar een andere sheet zijn en niet naar de nieuw gemaakte sheet.

Met virendelijke groet,

Christian
 
Code:
Sub Add_Cargo()
 If IsError(Evaluate(ActiveCell & "!A1")) Then Sheets.Add.Name = ActiveCell
End Sub
 
@ExcelAmateur

Dat werkt helaas ook niet, de verwijzing naar de cel werkt helaas niet zo goed.

@HSV
Wat doet die code precies?
 
Beter is het om zelf een voorbeeldje te maken. Vanuit blad2 wordt er een kopie gemaakt van 'Template' met de naam 'test'.

Code:
Sub VenA()
s = ActiveCell.Value
If IsError(Evaluate(s & "!A1")) Then
    Sheets("Template").Copy , Sheets(Sheets.Count)
    With ActiveSheet
        .Name = s
        .[b3] = .Name
    End With
End If
End Sub
 

Bijlagen

Er wordt een nieuw blad aangemaakt met de naam van de activecell.value.
Je krijgt geen foutmelding indien het blad al bestaat.
 
Bedankt allemaal :)

Het is inmiddels gelukt, de winnende code was deze:
Code:
Sub Add_Cargo()
s = ActiveCell.Value
If IsError(Evaluate(s & "!A1")) Then
    Sheets("Template").Copy , Sheets(Sheets.Count)
    With ActiveSheet
        .Name = s
        .[b3] = .Name
    End With
End If
End Sub

Prettige feestdagen en vast tot ziens!

Met vriendelijke groet,

Christian
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan