我已经尝试过这个代码来获取工作表中单元格的值:
lastRow = 0
lastRow = Cells(Rows.count, 1).End(xlUp).Row ' count the occupied cells in wb2
For i = 1 To lastRow - 1
Sheets.Add
Sheet1.Activate
ActiveWorkbook.Sheets("Sheet" & i).Range("A" & i) = ActiveSheet.Name
Next i
但是,不幸的是它没有用。让我们说:
所以,在我的代码中,我已经计算了非空的单元格。然后,我根据计算的占用单元数添加了一个工作表。在循环时,我必须在A1
中获取值并将其设置为Sheet
的名称,依此类推。有什么帮助吗?
答案 0 :(得分:0)
你应该可以在一行中添加一个命名工作表,我的行在你的循环中如下所示。 Sheets.Add
允许您传入要调用它的名称的值。
Dim s as String
s = Range("A" & i).value
Sheets.Add s
Sheets(1).activate
答案 1 :(得分:0)
lastRow = 0
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' count the occupied cells in wb2
For i = 1 To lastRow
Set s = Sheets.Add
s.Name = Cells(i, 1).Value
Next i
答案 2 :(得分:0)
似乎Gunnar打败了我发布一个有效的答案:)但是为了补充一点解释,这里是我写的答案! :
从我所看到的有几个问题......
首先,你有
Sheet1.Activate
但是这总是只是尝试激活Sheet1,你肯定想循环浏览新页面? (否则总是试图重命名同一张纸......)
然后要重命名工作表,您需要
ActiveSheet.Name =
在左侧(否则将尝试设置=左侧的任何内容作为工作表名称的值)
所以从这......
Sheet1.Activate
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' count the occupied cells
For i = 1 To lastRow 'don't need the -1 ;)
Sheets.Add 'new sheet will automatically be the one active I think
ActiveSheet.Name = Sheet1.Cells(i, 1).Value
Next i
希望有所帮助
答案 3 :(得分:0)
我会这样做:
Sub test()
Dim lastRow As Integer
lastRow = 0
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' count the occupied cells in wb2
For i = 1 To lastRow
Sheets.Add
ActiveSheet.Name = ActiveWorkbook.Sheets("Sheet1").Range("A" & i)
Next i
End Sub
我认为它不适合你的原因是因为你的循环一遍又一遍地选择相同的工作表并重命名工作表中的单元格而不是将工作表重命名为第一张工作表中的单元格。
编辑:删除了不必要的打印陈述,并考虑到玛丽莎关于循环中没有必要的-1的好处。