私はその問題に苦しんでいます。名前の異なる2つのシートがあり、以下のクエリで説明されているように、同じ基準でドキュメント全体にコピーしたいと思います。
VBA Excelは、作成された前のシートに基づいた番号で新しいシートを追加します
VBA Excelは、複製された前のシートに基づく番号で既存のシートを複製します
1枚の名前は問題なく機能しますが、2枚を同時に起動するとエラーが発生します。
私のコードは次のようになります。
Sub Sheetaadding()
'first sheet
Dim wsr As Worksheet, wso As Worksheet
Application.ScreenUpdating = False
Set wsr = ThisWorkbook.Sheets("Vet Area Map 1")
Set wso = ThisWorkbook.Sheets("Area Map 1 Open")
Dim I As Long, J As Long, K As Long
Dim xCount As Integer, yCount As Integer
For I = 1 To ActiveWorkbook.Sheets.Count
If InStr(1, Sheets(I).Name, "Vet") > 0 Then xCount = xCount + 1
Next
For I = 1 To Sheets.Count - (Sheets.Count - 1)
With Sheets("Vet Area Map 1")
.Copy After:=ActiveWorkbook.Sheets(wsr.Index + xCount + I)
ActiveSheet.Name = "Vet Area Map " & xCount + 1
.Select
End With
Next I
'second sheet
For J = 1 To ActiveWorkbook.Sheets.Count
If InStr(1, Sheets(J).Name, "Open") > 0 Then yCount = yCount + 1
Next
For J = 1 To Sheets.Count - (Sheets.Count - 1)
With Sheets("Area Map 1 Open")
.Copy After:=ActiveWorkbook.Sheets(wso.Index + (yCount + (J - 1)))
ActiveSheet.Name = "Area Map " & yCount + 1 & " Open"
.Select
End With
Next J
Application.ScreenUpdating = True
End Sub
そして、結果はまったく逆です。獣医エリアマップがうまくいくので、エリアマップ1オープンは逆の順序になります。
画像に示されているように、これらのシートを交換可能に表示するにはどうすればよいですか(「希望の順序」)。Vet Area Map3、Area Map 3 Open、Vet Area Map 4、Area Map 4Openなどを表示したい。
何かを逃したかもしれませんが、複雑なこと.Copy After:=
が問題の原因だと思います。
また、ループの目的もわかりませんFor I = 1 To Sheets.Count - (Sheets.Count - 1)
が、I = 1 to x - (x-1)
Whichと同じI = 1 to 1
であるため、ループはそれほど多くありません。
技術的には、ページを削除しない限り、2回カウントすることはほとんど役に立たないようです。また、各アクションの後に元のシートを選択することもありません。そして他のいくつかのクリーニング:
Sub Sheetaadding()
Dim wsr As Worksheet, wso As Worksheet
Dim I As Long, xCount As Long
Set wsr = ThisWorkbook.Sheets("Vet Area Map 1")
Set wso = ThisWorkbook.Sheets("Area Map 1 Open")
For I = 1 To ActiveWorkbook.Sheets.Count
If InStr(1, Sheets(I).Name, "Vet") > 0 Then xCount = xCount + 1
Next
'first sheet
wsr.Copy After:=ActiveWorkbook.Sheets(wsr.Index - 1 + xCount * 2)
ActiveSheet.Name = "Vet Area Map " & xCount + 1
'second sheet
wso.Copy After:=ActiveSheet
ActiveSheet.Name = "Area Map " & xCount + 1 & " Open"
End Sub
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加