【问题标题】:Right function within string (Excel 2007 VBA)字符串中的正确函数(Excel 2007 VBA)
【发布时间】:2014-03-04 19:23:45
【问题描述】:

好的:我正在处理 Excel '07 中的一个宏,它将导入文件、划分数据、进行必要的格式更改,然后将具有指定文件名的文件保存到网络驱动器,只需单击一下即可.

除最后一部分外,一切正常。我正在尝试将文件保存为 paystatusMMDD.xlsx,其中 MMDD 是单元格 (L2) 中的最后 4 个字符。但对于我的一生,我无法让 Right 功能正常工作。那么我做错了什么?我确定这很明显,但我无法弄清楚。

这是相关的代码部分:

Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
Path = "G:\HRO\PSM\PAYSTATUS\"
FileName1 = "paystatus"
FileName2 = Right(L2, 4)
ActiveWorkbook.SaveAs Filename:=Path & FileName1 & FileName2 & ".xlsx", FileFormat:=xlNormal
End Sub

【问题讨论】:

  • 使用Right(Range("L2"), 4)Right(Worksheets("Sheet1").Range("L2"), 4) 来指定L2 属于哪个单元格的工作表名称
  • @simoco 您能否提交一个答案,以便将问题标记为已回答?我注意到你喜欢用 cmets 来回答问题而不是答案......出于好奇,为什么?
  • @PortlandRunner,实际上我并不喜欢它,但在这种情况下,它更像是一个 comment 而不是答案:) 如果您愿意,请随时将其发布为答案:)
  • @simoco 没问题,我只是不想因为你的工作而受到赞扬,但有和强迫症有关的公开帖子:-)
  • @PortlandRunner - 为了不让您看起来像是在声称自己的功劳,您可以将答案标记为“社区 wiki”。

标签: vba excel save-as


【解决方案1】:

根据@simoco 评论,您需要更正引用单元格L2 的方式。

使用Range("L2") 代替L2,如下所示:

FileName2 = Right(Range("L2"), 4)

由于您可能从另一个工作表调用此宏,因此您应该完全限定 L2 的位置,如下所示:(假设单元格在工作表 1 上)

FileName2 =Right(Worksheets("Sheet1").Range("L2"), 4)

根据@Floris 评论,您可以将[L2] 简写为Range("L2")

FileName2 = Right([L2], 4)

【讨论】:

  • 我更喜欢使用[L2] - 这是Range("L2") 的VBA 简写。而且打字不是少了很多吗? Filename2 = Right([L2], 4).
猜你喜欢
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多