Excel日期更改VBA问题

时间:2015-07-08 09:00:29

标签: excel vba excel-vba

我试图创建一个宏,它将更改Excel中打开的当前工作表的名称。

它从包含未来日期的单元格中获取信息然而导致日期格式为dd / mm / yyyy它不会导入它。我试图让它显示为2011年8月11日或类似的东西。这是我到目前为止所得到的,我似乎无法在网上找到任何东西。

Sub ChangeSheetName()

newname = Range("D2")

ActiveSheet.Name = newname

End Sub

3 个答案:

答案 0 :(得分:0)

您可以使用newname = Range("D2").Text来获取日期。

Editted:
请注意,单元格中的日期格式需要更改 enter image description here

答案 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