Domanda

Sto cercando di ottenere un handle per il foglio di lavoro creato da un'operazione di copia.il seguente codice funzionava:

Dim wsTempl As Worksheet, pageCount as Long
Set wsTempl = Sheets("Template")
For pageCount = 1 To 5
   wsTempl.Copy After:=Sheets(Sheets.Count)
   Set ws = Sheets(Sheets.Count)
   ws.Name = "p" & pageCount 
Next

Ma si è interrotto durante l'aggiunta di fogli di lavoro VeryHidden alla cartella di lavoro.ora i miei Fogli (Sheets.Count) ottengono il foglio VeryHidden invece del foglio che ho aggiunto per ultimo.

Certo che potrei usare

Set ws = Sheets(wsTempl.Name & " (2)")
ws.Name = "p" & pageCount

Ma sembra così brutto, è davvero l’unico modo?Qualcuno può pensare ad un altro modo?

per replicare il problema:

  1. Apri una nuova cartella di lavoro, dai un nome al primo foglio "Modello" ed elimina gli altri fogli
  2. alt-f11 - inserisci il modulo di codice e incolla il codice sopra
  3. F5 dovrebbe mostrarti che funziona.
  4. inserisci un foglio di lavoro, utilizzando le schede del foglio di lavoro trascinalo alla fine della raccolta
  5. impostalo su VeryHidden nell'IDE VBA
  6. Ancora F5, il primo elenco di codici dovrebbe fallire

Il motivo sembra essere che Copy After:= non copia dopo VeryHidden Sheets, quindi la parte del codice per rinominare il foglio rinomina sempre VeryHidden Sheet

È stato utile?

Soluzione

Il metodo Copia di un foglio di lavoro rende attivo il foglio appena creato, quindi dovresti essere in grado di farlo.


Dim wsTempl As Worksheet, i as int
Set wsTempl = Sheets("Template")
For i = 1 To 5
   wsTempl.Copy After:=Sheets(Sheets.Count)
   Set ws = ThisWorkbook.ActiveSheet
   ws.Name = "p" & pageCount 
Next

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top