【问题标题】:How to create a macro that asks if you want to rename a sheet?如何创建一个询问您是否要重命名工作表的宏?
【发布时间】:2020-02-21 02:25:21
【问题描述】:

我需要一个宏,它可以在用户写入输入框时重命名工作表。到目前为止,我已经有了这个,但是当我插入一个新名称时,旧表并没有改变它的名称。

比较表已存在,名称为“比较”。我只想根据用户决定的新名称更改其名称。

Sub SalvarAba()

If MsgBox("Keep comparison?", vbQuestion + vbYesNo, "Keep?") = vbYes Then
     s = InputBox("Please enter a sheet name")
     'rename the sheet
End If

End Sub

这可能不是最好的方法,因此如有必要,请随时更改。

【问题讨论】:

  • 参考codename 的表格并更改.Name。请注意,您必须验证用户输入实际上是一个有效的名称。
  • 你需要一个输入框,因为消息框不允许任何输入。

标签: excel vba


【解决方案1】:
If MsgBox("Keep comparison?", vbQuestion + vbYesNo, "Keep?") = vbYes Then
     s = Inputbox("Please enter a sheet name")
     'rename the sheet
End If

【讨论】:

  • 如果是,则“比较”表将被重命名为输入框中的名称。
  • 是的 - 你试过了吗? @BigBen 在他们上面的评论中向你展示了如何。
  • 我做了,但比较表没有更改为新名称。
  • 请用您正在尝试的代码更新您的问题,并描述运行它时发生的情况。这就是它在这里最有效的方式。
【解决方案2】:

您可以通过输入框的形式完成所有这些操作。这包括三种可能的结果: 取消按钮 没有文字的确定按钮 带有文本的 OK 按钮 我不喜欢使用 activeworkbook,但我不知道你的工作簿叫什么。

我进行了建议的更改,并为现有的“比较”表添加了检查。

    Private Sub test()
Dim wb As Workbook
Dim sht As Worksheet
Dim r As String
Dim result As String
    On Error GoTo None
Set wb = ActiveWorkbook 'can be cnged to ThisWorkbook as needed.

        Set sht = wb.Sheets("Comparison") 'this checks for worksheet by the name of "Comparison"

    r = InputBox("Keep comparison?  Enter name and hit OK, or just cancel to not keep comparison")
    If StrPtr(r) = 0 Then
    ElseIf r = vbNullString Then
    Else
        wb.Sheets("Comparison").Name = r
    End If
None:
End Sub

【讨论】:

  • 我无法通过codeDim r As Textcode "r" 不是由用户定义的。我知道如何从这里开始
  • 没有 Text 类型 - 去掉 Dim r as Text。然后,您应该通过 codename 而不是名称来引用工作表...否则这是一种一次性的宏。第二次运行它时,没有名为“比较”的工作表(假设用户第一次实际更改了名称)。但按原样,这不会编译。
  • wb = ActiveWorkbook 将失败,因为您需要Set...但无论如何它可能应该是ThisWorkbook
  • @Synth FWIW,您希望在此处将 r 声明为 As Variant。注意StrPtr(r)=0 分支处理提示取消; r=vbNullString 分支处理正常但空的输入,Else 分支处理所有其他情况(但不验证 r 是有效的工作表名称,因此可能会发生错误,具体取决于用户的输入及其长度)。
  • @Synth 试试看你能不能在这个网站上找到一个问题来“确定工作表是否存在”,比如here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 2016-07-20
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多