下标超出范围用于选择范围并向其添加值的代码中的错误

时间:2013-10-04 09:33:24

标签: excel-vba vba excel

Sub openwb()

Dim sb As String

ChDir "E:\sarath\PTMetrics"

Workbooks.Open ("E:\sarath\PTMetrics\D8 L538-L550_16MY_Powertrain Metrics_" & (Format(Date, "YYYYMMDD") - 1) & ".xlsm")

ActiveWorkbook.SaveAs "E:\sarath\PTMetrics\D8 L538-L550_16MY_Powertrain Metrics_" & (Format(Date, "YYYYMMDD") & ".xlsm")

Set x260wb = ActiveWorkbook

Debug.Print x260wb.Name

Workbooks("x260wb").Sheets("All Concerns").Range(A1).Value = "Hay..."

End Sub

这里在第8行,我收到错误说“下标超出范围”。你可以帮忙吗?..

1 个答案:

答案 0 :(得分:0)

Spoon最后一次喂你:)

  1. 声明您的对象/变量。如果使用它们,工作变得更容易。避免使用ActiveWorkbook/ActiveSheet/Selection..等。 INTERESTING READ
  2. 变量和字符串之间存在差异。适当使用它们。如果在"中包含变量名,则它们将成为字符串,反之亦然,即如果字符串是一个单词。
  3. 您要从字符串Format(Date, "YYYYMMDD") - 1中减去1。 Format会返回String。请参阅下面代码中提供的替代方案。
  4. 在Excel VBA中执行Save As时,您必须指定FileFormat,例如,xlsm的文件格式为53以下是其他文件格式。
  5. 文件格式

    50 = xlExcel12 (Excel Binary Workbook in 2007-2013 with or without macro's, xlsb)
    51 = xlOpenXMLWorkbook (without macro's in 2007-2013, xlsx)
    52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2013, xlsm)
    56 = xlExcel8 (97-2003 format in Excel 2007-2013, xls)
    

    您的代码(未测试)

    Sub openwb()
        Dim wb As Workbook
        Dim sPath As String, sFilename As String, newName As String
    
        sPath = "E:\sarath\PTMetrics\"
                sFilename = sPath & _
                    "D8 L538-L550_16MY_Powertrain Metrics_" & _
                    Format(Date - 1, "YYYYMMDD") & _
                    ".xlsm"
    
        Set wb = Workbooks.Open(sFilename)
    
        newName = sPath & _
                  "D8 L538-L550_16MY_Powertrain Metrics_" & _
                  Format(Date, "YYYYMMDD") & _
                   ".xlsm"
    
        wb.SaveAs newName, FileFormat:=53
    
        wb.Sheets("All Concerns").Range("A1").Value = "Hay..."
    End Sub