字符串中的正确函数(Excel 2007 VBA)
Posted
技术标签:
【中文标题】字符串中的正确函数(Excel 2007 VBA)【英文标题】:Right function within string (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”。
【参考方案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)
.以上是关于字符串中的正确函数(Excel 2007 VBA)的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA FSO.GetFolder(folderPath) 在 2007 年但不是 2010 年工作
在 excel 2007 vba 中找不到可安装的 ISAM