VBA从excel选项卡名称中删除前缀

标签 vba excel

我有一个带有许多选项卡的 excel 文件。所有选项卡都命名为:“pboro bz.csv”、“pboro fd.csv”、“pboro ha.csv”等。

我希望重命名所有这些“bz.csv”、“fd.csv”、“ha.csv”。

此外,根据另一个 VBA 导入的数据,选项卡名称可能有不同的前缀。因此,我在标题为“设置”的工作表中有一个单元格 (B8),其前缀是我希望删除的,在本例中为“pboro”

我正在尝试使用此代码:

Sub RemovePrefix()
  Dim WS As Worksheet
  Dim Val As String
  Val = Setup.Range("B8").Value
  Const Prefix As String = Val
  For Each WS In Worksheets
    If WS.Name Like Prefix & "*" Then WS.Name = Mid(WS.Name, Len(Prefix) + 1)
  Next
End Sub

代码崩溃上线
 Const Prefix As String = Val

出现错误“需要常量表达式”

我怀疑这是因为我将 Dim 与 Val 一起使用,然后将 Const 与 Prexif 一起使用。
但是,当我将代码调整为以下内容时:
Sub RemovePrefix()
  Dim WS As Worksheet
  Dim Val As String
  Val = Setup.Range("B8").Value
   For Each WS In Worksheets
   If WS.Name Like Val & "*" Then WS.Name = Mid(WS.Name, Len(Val) + 1)
  Next
End Sub

我收到与我的代码行相关的错误“需要对象”
  Val = Setup.Range("B8").Value

我不确定我哪里出错了(作为一个相对的 VBA 菜鸟可能没有帮助)。

最佳答案

现在它崩溃了,因为你从未设置 Setup作为工作表。

Dim setup as Worksheet
Set setup = Sheets("Setup")

应该做的伎俩。此外,它看起来像 Val会改变,所以你不想将它设置为 Constant .

关于VBA从excel选项卡名称中删除前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35299511/

相关文章:

excel - 如何在多行或单行值之间进行正则表达式

vba - 用于删除除包含特定文本的行之外的所有行的宏

excel - 如何确定约会对象是否已发送?

excel - _xlfn.IFERROR Excel2013删除

excel - 如何更改 VBA Excel 中显示用户窗体的值

使用 OPENROWSET 将 SQL Server 导出到 Excel

excel - 如何处理这个 Excel 验证怪癖?

vba - 如何在excel vba中提示工作表选择

excel - 使用 go 遍历特定的 excel 列

vba - 使用 VBA 复制大文件大小的范围