2017-02-21 1 views
0

Also ich versuche, ein Makro zu beenden, das alle Arbeitsblätter mit ähnlichen Namen auswählt und sie vor einem bestimmten Blatt in einer Arbeitsmappe verschiebt. Der Benutzer kann so viele Seiten mit diesen Namen hinzufügen, dass ich nicht einfach eine Array-Funktion verwenden könnte, um sie zu verschieben. Das ist, was ich habe, so weit:Verschieben Sie Seiten mit ähnlichen Namen in der Arbeitsmappe

Sub Copier() 

Application.DisplayAlerts = False 
Application.ScreenUpdating = False 


Dim x As Integer 
x = InputBox("Enter Number of Additional Features") 
For numtimes = 1 To x 
ActiveWorkbook.Sheets(Array("Data Collection", "Findings", "Visual Findings")).Copy _ 
Before:=ActiveWorkbook.Sheets("Final Results") 
    'Allows user to create as many pages as necessary 

Dim ws As Worksheet, flg As Boolean 
For Each ws In Worksheets 
    If (ws.Name) Like "*Data Collection*" Then 
     ws.Select Not flg 
     flg = True 
End If 
Next 
'Selects all sheets for "Data Collection" 
'Now I need to move all of those selected before a certain sheet at the 
    beginning of the workbook 
'I cant seperate the copy functions because some formulas from data collection have to carry 
over to the other copied sheets 

'Sheet2.Activate 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
End Sub 
+2

Wie definieren Sie "Ähnliche Namen"? "Findings" ähnlich wie "Visual Findings"? Vielleicht ist es vielleicht besser gesagt, dass Sie eine bestimmte Seite ("Final Results"?) Wollen * nach * allen anderen Blättern? – BruceWayne

+0

Die vom Benutzer erstellten Datenerfassungsseiten müssen sich dem Anfang des Berichts nähern. Es gibt andere Seiten vor und nach den erstellten Seiten, die nicht daran gebunden sind. Ich versuche, alle Datenerfassungsseiten an den Anfang zu leiten, damit meine Benutzer sie ausfüllen können, ohne den gesamten Bericht durchgehen zu müssen. –

Antwort

0

Sie verwenden können:

Dim sheetNames As String 
Dim ws As Worksheet, flg As Boolean 
For Each ws In Worksheets 
    If ws.Name Like "*Data Collection*" Then sheetNames = sheetNames & "|" 
Next 

If sheetNames <>"" Then ActiveWorkbook.Sheets(Split(Left(sheetNames, Len(sheetNames) - 1),"|").Move Before:=ActiveWorkbook.Sheets("Final Results") 
+0

ich es herausgefunden eine andere Richtung gehen: –

+0

Dim numtimes As Integer Dim x As Integer Dim y As String x = InputBox ("Enter Anzahl der Zusatzfunktionen") Für numtimes = 1 bis x ActiveWorkbook.Sheets (Array . ("Data Collection", "ILI vs NDE", "Screen Shot")) Kopieren _ Vorher: = ActiveWorkbook.Sheets ("MPI") Wenn numtimes> 1 Dann y = "Data Collection (" & numtimes & ")" Sonst: y = "Datensammlung" Ende Wenn Arbeitsblätter ("Datensammlung (" & numbertimes + 1 & ")"). Verschieben _ Nachher: ​​= Arbeitsblätter (y) –

Verwandte Themen