字符串中的正确函数(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 年工作

Excel2007 VBA复制整行到其它sheet

选择具有复杂返回值的案例 (VBA 2007)

在 excel 2007 vba 中找不到可安装的 ISAM

无法在 Excel 2007 VBA 中使用 Option Strict Off 进行后期绑定

从 Access 2007 VBA 代码创建 .xlsx 文件时强制用户使用 Excel 版本