[英]Excel 2010: Best use of CASE or IF to define SAVEAS location (VBA)
程序: Excel 2010
经验:基本
题
我想将我的工作簿工作表(和生成的.pdf文件)保存在取决于单元格值的位置,而不是编写5个Subs, 而是想使用IF
或CASE
编写一个 Subs。 我确实有一个静态保存位置(投递箱),但是我还需要在各个单元格位置中保存重复项。
我无法正确使用任何一种语法。
Sub saveManID()
Dim sDB As String
Dim sMDocs As String
Dim sMBus As String
Dim sName As String
Dim sSel As String
Dim sMan As String
'define file name
sName = Sheets("Statement").Range("B52").Text
'define location name
sDB = "E:\location dropbox\"
sMDocs = "D:\My Documents\"
sMBus = "D:\location alt\"
'---- Either IF or CASE to define the SAVEAS location ----'
If Sheets("Statement").Range("J2").Text = "3" Then
sMan = "G:\location\folder3\"
If Sheets("Statement").Range("J2").Text = "4" Then
sMan = "G:\location\folder4\"
'---- end ----'
ActiveWorkbook.SaveAs Filename:=sMan & sName & Format(Date, "YYYYMMDD") & ".xls",_
FileFormat:=52, ReadOnlyRecommended:=False, CreateBackup:=False
Sheets("Statement").Range("A1:G49").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sMan & sName & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End if
End if
End Sub
我需要获取Range("J2")
来从单元格值中定义位置,并且需要基于另一个单元格值创建名称。
如果我排除IF
,Sub可以很好地运行,但这意味着我必须重复代码并为每个值分配一个按钮。
需要说明的是-单元格值Range("J2")
将确定文件保存到的位置,在上面的示例中,该文件在IF
语句中不起作用。
要修正您编写的内容,请尝试将End If
移到常见代码之前,如下所示:
If Sheets("Statement").Range("J2").Text = "3" Then
sMan = "G:\location\folder3\"
End If
If Sheets("Statement").Range("J2").Text = "4" Then
sMan = "G:\location\folder4\"
End if
ActiveWorkbook.SaveAs Filename:=sMan & sName & Format(Date, "YYYYMMDD") & ".xls",_
FileFormat:=52, ReadOnlyRecommended:=False, CreateBackup:=False
Sheets("Statement").Range("A1:G49").ExportAsFixedFormat Type:=xlTypePDF, Filename:=sMan & sName & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
或像这样:
If Sheets("Statement").Range("J2").Text = "3" Then
sMan = "G:\location\folder3\"
ElseIf Sheets("Statement").Range("J2").Text = "4" Then
sMan = "G:\location\folder4\"
End if
或像这样:
myVal = Sheets("Statement").Range("J2").Text
If myVal = "3" Then
sMan = "G:\location\folder3\"
ElseIf myVal = "4" Then
sMan = "G:\location\folder4\"
End if
要使用Select Case
,请像下面这样重写它:
Select Case Sheets("Statement").Range("J2").Text
Case "3"
sMan = "G:\location\folder3\"
Case "4"
sMan = "G:\location\folder4\"
Case Else
'set sMan to your default dropbox location here
End Select
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.