Excel VBA del Foglio di lavoro.Copia Di Excel 2013

Voglio copiare un foglio di lavoro e posizionarlo DIRETTAMENTE dopo l’altro foglio. Ma ho problemi quando ci sono i fogli nascosti coinvolti.

Utilizzo di Excel 2013 ho aperto una nuova cartella di lavoro.
Aggiungere un Foglio dopo “Foglio1”. Rinominarlo in “HiddenSheet2”
Aggiungere un Foglio dopo “HiddenSheet2”. Rinominare il nuovo foglio “Foglio3”
Quindi ho “Foglio1” – “HiddenSheet1” – “Foglio3”
Quindi nascondere “HiddenSheet1”

Successiva che si esegue questo Codice VBA:

Sub test()
Dim ws1 AS Worksheet
Set wst = Sheets("Sheet1")
wst.Copy After:=Sheets(wst.Index)
End Sub

Il foglio inserito vengono inserite dopo “HiddenSheet2” e non dopo “Foglio1”.
Ho trovato che il copiato il foglio diventa attivo.

Ottenere Maniglia sull’ultimo foglio di lavoro copiato dal Foglio di lavoro.Copia

VBA Copia Foglio alla Fine della Cartella di lavoro (con i Fogli di lavoro Nascosti)

Ma il mio problema è che ho bisogno di un foglio di rimanere in un ordine specifico.

Grazie

Edit:

Sub test()
Dim ws1 AS Worksheet
Set wst = Sheets("Sheet1")
wst.Copy After:=Sheets(wst.Index)
ThisWorkbook.ActiveSheet.Move After:=Sheets(wst.Index)
End Sub

Questo non ottenere il nuovo foglio direttamente dopo “Foglio1” o.

  • Perché non utilizzare wst.copy after:=wst?
  • Cosa @glh detto. Hai già wst come un Foglio di lavoro variabile. Basta usare quella per il After argomento 🙂
  • wst.copy after:=wst e wst.copy after:=Sheets("Sheet1") produce gli stessi risultati. Il mio nuovo foglio di ottenere dopo il foglio nascosto e non direttamente dopo “Foglio1”
  • Ma sì, è fare di più visto che per utilizzare wst.copy after:=wst
InformationsquelleAutor Jonathan | 2013-05-02

 

2 Replies
  1. 3

    Codice esistente può essere aggiunto

    Sub test()
    Dim ws1 AS Worksheet
    Set wst = Sheets("Sheet1")
    wst.Copy After:=Sheets(wst.Index)
    ThisWorkbook.ActiveSheet.Move After:=Sheets(wst.Index)
    If (ActiveSheet.Index - wst.Index - 1) <> 0 Then
            Sheets(wst.Index + 1).Visible = True
            ActiveSheet.Move After:=wst
            Sheets(wst.Index + 2).Visible = False
        End If
    End Sub
    • Grazie a questo ha fatto il trucco. Ho pensato che potrebbe finire per fare un semi hack. Ma voleva solo assicurarsi che non ero pazzo. Posso un po’: If (ActiveSheet.Index - wst.Index - 1) <> 0 Then Dim bVisible As Boolean bVisible = Sheets(wst.Index + 1).Visible Sheets(wst.Index + 1).Visible = True ActiveSheet.Move After:=wst Sheets(wst.Index + 2).Visible = bVisible End If È probabile sicuro di dire loro un foglio nascosto come questo è l’unica volta che questo è un problema, ma vi risparmio la Visibilità in caso di Excel mi butta per un altro ciclo.
    • Non certo perché non ha formato il codice di diritto…
    • +1 buono. Non sapevo che problema con fogli nascosti.
  2. 0

    L’indice di struttura è a base zero, a meno che non specificato altrove. Fogli di proprietà è la base di uno. Hai bisogno di:

    1. Aggiungere 1 per l’indice, non preferito.
    2. Riferimento .nome struttura, meglio è.
    3. Di riferimento il foglio variabile avete I. e. Wst.copia dopo:=wst, migliori.
    4. O spostare il foglio nascosto dopo il nuovo.
    • Grazie vorrei evitare di utilizzare gli indici quando posso anche se quello non era il problema, in questo caso.

Lascia un commento