[英]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.