我正在尝试创建一个代码,以输出工作簿名称(例如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”执行类似的操作?预先谢谢你!
答案 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
-正如其他评论所建议的。