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

时间:2016-02-09 18:30:13

标签: excel vba excel-vba

我有一个包含许多标签的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 noob可能并不帮助)。

1 个答案:

答案 0 :(得分:3)

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

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

应该做的伎俩。此外,Val似乎会发生变化,因此您不希望将其设置为Constant