根据行数

时间:2017-04-21 14:46:08

标签: excel excel-vba vba

我知道这已经讨论过,我从Stackoverflow上的几个不同帖子中得到了以下代码。我的问题是,如果列" A"行的行数不等于硬编码的数字(rowsPerSheet = 10),它会将额外的行添加回原始页面。如果我有35行,我将获得3个带有工作表2和工作表的工作表。 3是正确的,但工作表1将有1-10行+ 31-35行。我应该改变什么?请原谅多余的代码,我只想确保在此过程中将答案放在正确的位置。

Sub SaveSheets()
Application.EnableEvents = False
Dim nUserInput As String
Dim wsMasterSheet As Excel.Worksheet
Dim wb As Excel.Workbook
Dim sheetCount As Integer
Dim rowCount As Integer
Dim rowsPerSheet As Integer
nUserInput = InputBox("Enter Job Number:", "Collect User Input")
Set wsMasterSheet = ActiveSheet
Set wb = ActiveWorkbook

rowsPerSheet = 10
rowCount = Application.CountA(Sheets(1).Range("A:A"))
sheetCount = Round(rowCount / rowsPerSheet, 0)

Dim i As Integer

For i = 1 To sheetCount - 1 Step 1
With wb
'Add new sheet
.Sheets.Add after:=.Sheets(.Sheets.Count)

wsMasterSheet.Range("A1:M1").EntireRow.Copy     Destination:=Sheets(.Sheets.Count).Range("A1").End(xlUp)

wsMasterSheet.Range("A2" & ":M" & (rowsPerSheet + 1)).EntireRow.Cut Destination:=Sheets(.Sheets.Count).Range("A" & Rows.Count).End(xlUp).Offset(1)
wsMasterSheet.Range("A2" & ":M" & (rowsPerSheet + 1)).EntireRow.Delete

ActiveSheet.Name = "Valves " + CStr(((.Sheets.Count - 1) * rowsPerSheet + 1))
End With


Next

wsMasterSheet.Name = "Valves End"

Application.EnableEvents = True


Dim strPath As String
Dim ws As Worksheet

Application.ScreenUpdating = False

strPath = "\\Server Name\Engineering\iPortal Valves\"
For Each ws In ThisWorkbook.Sheets
    ws.Copy
    Workbooks(Workbooks.Count).Close True, strPath & nUserInput & "_" & ws.Name & ".xlsx"
Next

Application.Quit
ActiveWorkbook.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub

试着想一想,我想知道是否可以使用

添加某些内容
lastRow = Sheet1.UsedRange.Row + Sheet1.UsedRange.Rows.Count - 1

在非编码术语中:

如果lastRow大于RowsPerSheet且小于(2 * RowsPerSheet - 1) 然后RowsPerSheet =(lastRow - RowsPerSheet)。

RowsPerSheet需要" Dim"允许代码覆盖硬值?如果我正确理解代码处理,如果重置RowsPerSheet的编码落在" For / Next"当再次运行宏时,硬编码的数字将保留。

这里的其他问题是1)如何编写代码,2)代码应该在哪里?

我已将上述代码修改为我能够完成的工作。原始工作表基于rowPerSheet拆分为单独的工作表,并创建单个文件并保存到指定位置。

感谢所有在Stackoverflow上发帖的人,所有编码都来自各个帖子。

0 个答案:

没有答案