我试图创建一个宏,它将更改Excel中打开的当前工作表的名称。
它从包含未来日期的单元格中获取信息然而导致日期格式为dd / mm / yyyy它不会导入它。我试图让它显示为2011年8月11日或类似的东西。这是我到目前为止所得到的,我似乎无法在网上找到任何东西。
Sub ChangeSheetName()
newname = Range("D2")
ActiveSheet.Name = newname
End Sub
答案 0 :(得分:0)
您可以使用newname = Range("D2").Text
来获取日期。
Editted:
请注意,单元格中的日期格式需要更改
答案 1 :(得分:0)
问题是日期中的正斜杠。您可以使用Format()
将日期重新格式化为不包含斜杠的内容 - 例如
If IsDate(Range("A1").Value) Then
newname = Format(Range("A1").Value, "yyyy-mm-dd")
Else
'Handle the error here
End If
这并不依赖于格式正确的单元格。另请注意,如果D2
不包含日期,那么Format
只会不管它 - 可能包含无效字符 - 因此我会先检查。
更通用的解决方案是使用正则表达式将无效字符替换为其他字符(例如,如this question中所示)。
答案 2 :(得分:0)
日期是dd / mm / yyyy它不会导入它。我试图让它在2011年8月11日显示它
尝试以下
Option Explicit
Sub ChangeSheetName()
Dim newname As String
newname = Format(Range("D2"), "dd mmmm yyyy;@") ' 11 August 2011
'or
'newname = Format(Sheets("Sheet1").Range("D2"), "dd mmmm yyyy;@") ' 11 August 2011
ActiveSheet.Name = newname
End Sub
您不必格式化单元格,请参阅日期formats