繁体   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