如何在单元格中返回工作表或工作簿名称

时间:2019-06-05 09:19:14

标签: excel vba worksheet

我正在尝试创建一个代码,以输出工作簿名称(例如20160701_tyo)中包含的日期(例如201607)。在下面的代码中,我指定了要输出值的单元格,但是我总是遇到一个错误,我没有“定义我的对象”。我想念什么?

Sub WorksheetDateName()
    Dim DateName As String, OnlyDate As Long
    DateName = ActiveWorkbook.Name
    OnlyDate = Left(DateName.Value, 6)
    ActiveWorksheet.Range("E1").Value = OnlyDate
End Sub

此外,除了“ ActiveWorkbook”之外,是否有可能对“ ActiveSheet”执行类似的操作?预先谢谢你!

1 个答案:

答案 0 :(得分:3)

对于工作簿名称,您可以使用VBA:

ActiveSheet.Range("E1").Value = Left(ActiveWorkbook.Name, 6)

或者您也可以在E1中使用公式,例如:

=MID(CELL("filename"),FIND("[",CELL("filename"))+1,6)

对于工作表名称,如果要使用前6个字符,则可以使用VBA:

 ActiveSheet.Range("F1").Value = Left(ActiveSheet.Name, 6)

,等效公式为:

=MID(CELL("filename"),FIND("]",CELL("filename"))+1,6)

注意:两个Excel公式均要求文件至少已保存一次才能正常工作。


不过,仔细检查代码,一种“修复”的方法是使用Val将6个字符串转换为可以保存在Long中的值。

Sub WorksheetDateName()
    Dim DateName As String, OnlyDate As Long
    DateName = ActiveWorkbook.Name
    OnlyDate = Val(Left(DateName, 6))
    ActiveSheet.Range("G1").Value = OnlyDate
End Sub

您还将注意到,我已将ActiveWorksheet更改为Activesheet-正如其他评论所建议的。

相关问题