簡體   English   中英

下標超出范圍錯誤9 vba

[英]Subscript out of range error 9 vba

當另一個用戶運行我的添加時我得到一個超出范圍錯誤的下標但是在我自己運行相同的代碼時沒有問題。 設置工作簿值時會發生這種情況。 通過獲取當前日期生成文件名並存儲為gendate。 由此,根據用戶創建的文件路徑創建並保存文件名。 在此示例中,gv.Range(“b2”)。text的值為C:\\ Users \\ username \\ Desktop \\ ReportGeneration。 因此,fp是C:\\ Users \\ dmulhausen \\ Desktop \\ ReportGeneration \\ TSReports9_6_201615h5m32s.xlsx這不會為我生成錯誤,但它會為腳本的其他用戶生成錯誤。

Dim ai As Workbook  'add in data ---Initialized in Report Setup
Dim dwb As Workbook 'destination workbook ---Initialized in Report Setup
Dim ss As Worksheet 'source sheet
Dim ds As Worksheet 'destination sheet or writing sheet
Dim rv As Worksheet 'reporting variables sheet ---Initialized in Report Setup
Dim pv As Worksheet 'ts variables sheet ---Initialized in Report Setup
Dim gv As Worksheet 'global ai variables ---Initialized in Report Setup
Dim tempstr As String
Dim fp As String 'file path ---Initialized in Report Setup
Dim gendate As Date
Dim reportscreated As Integer
Dim initialized As Boolean
Dim sheetnames(1 To 12) As String

Sub reportsetup()
    Set ai = Workbooks("TSReports add in.xlam")
    Set rv = ai.Worksheets("ReportVars")
    Set pv = ai.Worksheets("TS1_2Vars")
    Set gv = ai.Worksheets("globalVars")
    If (IsEmpty(gv.Range("b2").Value)) Then
        MsgBox ("Please select a designated folder for reports")
        With Application.FileDialog(msoFileDialogFolderPicker)
            .AllowMultiSelect = False
            .Show
            If .SelectedItems.Count > 0 Then
                gv.Range("b2").Value = .SelectedItems(1)
            End If
            ai.Save
        End With

    End If
    initialized = True
    gendate = Now()
    tempstr = "TSReports" & Month(gendate) & "_" & Day(gendate) & "_" & Year(gendate) & Hour(gendate) & "h" & Minute(gendate) & "m" & Second(gendate) & "s"
    fp = gv.Range("b2").Text & "\" & tempstr & ".xlsx"
    Workbooks.Add
    Application.DisplayAlerts = False
    Application.AlertBeforeOverwriting = False
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=fp
    Set dwb = Workbooks(tempstr) '*******Error occurs here*******

請參閱: Windows()。激活適用於除一個以外的每台計算機

這應該解決問題。

tempstr = "TSReports" & Month(gendate) & "_" & Day(gendate) & "_" & _
            Year(gendate) & Hour(gendate) & "h" & Minute(gendate) & "m" & _
            Second(gendate) & "s" & ".xlsx"

fp = gv.Range("b2").Text & "\" & tempstr 

Workbooks.Add
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=fp
Set dwb = Workbooks(tempstr) 

然而,這將更加強大:

Set dwb = Workbooks.Add
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
Application.DisplayAlerts = False
dwb.SaveAs Filename:=fp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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