[Excel] Nieuw sheet invoegen dmv een macro

Pagina: 1
Acties:
  • 194 views sinds 30-01-2008
  • Reageer

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 16:18

Maasluip

Kabbelend watertje

Topicstarter
Als je in Excel een nieuw sheet invoegt dan geeft Excel dat sheet automatisch een naam. Als je dit in een macro doet met Sheets.Add dan krijg je geen sheetnaam terug.
Hoe weet je nu wat de naam van het sheet is dat Excel gemaakt heeft? De naam van sheets zijn verschillend in de verschillende taalversies, dus door gokken dat het het 4e sheet is en dan 'Sheet' ervoor plakken zal niet lukken (nog afgezien van wat er gebeurt als het niet het 4e sheet is).

Als ik Excel geprogrammeerd had zou ik Sheets.Add de sheetnaam terug laten geven, maar ja, dat zit er blijkbaar niet in.

Signatures zijn voor boomers.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Krijgt de sheet niet automatisch de hoogste index + 1 mee?

[ Voor 4% gewijzigd door BtM909 op 05-01-2004 11:52 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 16:18

Maasluip

Kabbelend watertje

Topicstarter
BtM909 schreef op 05 januari 2004 @ 11:52:
Krijgt de sheet niet automatisch de hoogste index + 1 mee?
Dan weet je nog niks. Je hebt Sheets.Count, maar dat zijn het aantal sheets in je workbook. Als je een sheet wist dan gaat .Count ook naar beneden.
Is er dan nog een bepaalde property die de index van het hoogste sheet heeft?
En dan nog weet je niet of het sheet "Sheet" of "Foglio" gaat heten (ja, ik weet niet hoe de Nederlandse vertaling is)

Signatures zijn voor boomers.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ik vind dit iets te zuiver Office-werk voor P&W, moved to SA :)

Professionele website nodig?


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Kan je dan niet gewoon de naam van sheet (count) opvragen?
Sheets.Add After:=Sheets(Sheets.Count)
en dan dus Sheets(Sheets.Count).Name

Anders een foute omweg: maak een lijstje van alle sheets (FOR EACH etc), voeg sheet toe, maak weer een lijstje en vergelijk.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 16:18

Maasluip

Kabbelend watertje

Topicstarter
F_J_K schreef op 05 januari 2004 @ 14:13:
Kan je dan niet gewoon de naam van sheet (count) opvragen?
Sheets.Add After:=Sheets(Sheets.Count)
en dan dus Sheets(Sheets.Count).Name
Werkt _/-\o_

Signatures zijn voor boomers.


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Als je de naam alleen wilt weten voor in je VBA-code, kun je de nieuwe sheet in een variabele stoppen:
code:
1
2
3
4
5
6
7
Sub Doe_es()
Dim shtNieuwBlad As Worksheet

Set shtNieuwBlad = ActiveWorkbook.Sheets.Add
MsgBox shtNieuwBlad.Name

End Sub

[ Voor 1% gewijzigd door KingRichard op 05-01-2004 17:07 . Reden: haakjes fout in code ]

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Tuurlijk O-) :+
Maar KingRichard doet het makkelijker, je eerste idee blijkt toch al te werken..
mdeen schreef op 05 januari 2004 @ 11:47:
Als ik Excel geprogrammeerd had zou ik Sheets.Add de sheetnaam terug laten geven, maar ja, dat zit er blijkbaar niet in.
Ze werken wel heel erg snel :D

Hmm, waarom probeerde ik dat niet eerst even. Trouwens wel fout dat dat niet is gedocumenteerd onder F1 :o


Ben ik de enige die debug.print gebruikt ipv. msgbox?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 16:18

Maasluip

Kabbelend watertje

Topicstarter
F_J_K schreef op 05 januari 2004 @ 16:23:
[...]

Tuurlijk O-) :+
Maar KingRichard doet het makkelijker, je eerste idee blijkt toch al te werken..

[...]

Ze werken wel heel erg snel :D

Hmm, waarom probeerde ik dat niet eerst even. Trouwens wel fout dat dat niet is gedocumenteerd onder F1 :o


Ben ik de enige die debug.print gebruikt ipv. msgbox?
Ik ben al meer tegengekomen dat niet in de help zit.
Ik had trouwens al een Debug.Print Sheets.Add gedaan (ja, ik gebruik ook Debug.Print) maar omdat het blijkbaar een collection is werkte dat niet.

Nou ja, de modjes vinden dit blijkbaar ook geen programmeren :o dus het is maar hobby'en (voor mijn werk) en dan hoef je het niet te documenteren 8)7

Signatures zijn voor boomers.


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

F_J_K schreef op 05 januari 2004 @ 16:23:
[...]
Trouwens wel fout dat dat niet is gedocumenteerd onder F1 :o [...]
mdeen schreef op 05 januari 2004 @ 23:14:
[...]
Ik ben al meer tegengekomen dat niet in de help zit. [...]
Onzin... Het staat niet bij .Add omdat het een basisprincipe is. Bij mij (Excel 2002 ENG) staat het in de Help bij het tweede hoofdstuk, eerste onderwerp, oftewel Programming Concepts(!) -> Workbooks and Worksheets:
Creating a New Workbook

To create a new workbook in Visual Basic, use the Add method. The following procedure creates a new workbook. Microsoft Excel automatically names the workbook BookN, where N is the next available number. The new workbook becomes the active workbook.

Sub AddOne()
Workbooks.Add
End Sub

A better way to create a new workbook is to assign it to an object variable. In the following example, the Workbook object returned by the Add method is assigned to an object variable, newBook. Next, several properties of newBook are set. You can easily control the new workbook using the object variable.

Sub AddNew()
Set NewBook = Workbooks.Add
With NewBook
.Title = "All Sales"
.Subject = "Sales"
.SaveAs Filename:="Allsales.xls"
End With
End Sub
:)
offtopic:
Ik gebruik eigenlijk altijd Debug.Print (in de vorm van "?"); raar dat ik dan in zo'n voorbeeld MsgBox gebruik...

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]

Pagina: 1