excel - VBA - 获取最后添加的工作表的名称

标签 excel vba

我正在寻找一个代码来获取最后添加到 Excel 的工作表的名称。

我试过这个...

Sub test()
Dim lastAddedSheet As Worksheet
Dim oneSheet As Worksheet
With ThisWorkbook
    Set lastAddedSheet = .Sheets(1)
    For Each oneSheet In .Sheets
        If Val(Mid(oneSheet.CodeName, 6)) > Val(Mid(lastAddedSheet.CodeName, 6)) Then
            Set lastAddedSheet = oneSheet
        End If
    Next oneSheet
End With
MsgBox lastAddedSheet.Name & " was last added."
End Sub

但它并没有真正起作用。

最佳答案

你不能可靠 知道上次添加的工作表,因为可以在工作簿中任何现有工作表之前或之后插入工作表,请参阅 Sheets.Add documentation .

除非你是添加它的人。在这种情况下,您需要做的就是捕获 Worksheet Add 返回的对象方法:

Dim newSheet As Worksheet
Set newSheet = wb.Worksheets.Add

Debug.Print newSheet.Name

CodeName 中提取数字也不可靠 - 特别是如果您假设每张工作表的代号都以 5 个字母开头。在德国机器上,CodeName我们所看到的Sheet1将是 Tabelle1 - 但又一次,该数字的作用是严格确保 VBComponent 名称的唯一性。 VBA 项目中的项目,并且没有一个说它与任何排序有关。

关于excel - VBA - 获取最后添加的工作表的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57995931/

相关文章:

vba - Excel 64 位和 comdlg32.dll 自定义颜色

vba - 查找两个日期的小时和分钟差异,格式为 dd/mm/yyyy hh :mm

regex - VBA Excel 如果出现在字符串开头,则替换数字的最后 2 位

vba - 如何将固定宽度的文本文件导入Excel?

excel - 对公共(public) Google 表单的请求返回 Access Denied : HTTP

arrays - Excel VBA Listrow 到数组

vba - 如何使用 vba 将单元格值作为图表标题

excel - VBA 中的日期/时间比较

ms-access - 微软 Access : use VBA to split a string from a text box into other text boxes

excel - 在不知道其编号的情况下引用组合框