簡體   English   中英

Excel 2010:最佳使用CASE或IF定義SAVEAS位置(VBA)

[英]Excel 2010: Best use of CASE or IF to define SAVEAS location (VBA)

程序: Excel 2010
經驗:基本


我想將我的工作簿工作表(和生成的.pdf文件)保存在取決於單元格值的位置,而不是編寫5個Subs, 而是想使用IFCASE編寫一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM