将数据导出到新的工作簿,而不pipeVBA中的语言设置如何

我有一个代码从当前工作簿(多个工作表)收集数据,并以预定义的方式将数据导出到新的工作簿。

问题:我用英文编写了我的代码,所以我通过名称引用了一些输出表(例如Sheet1)。 但是,我希望这个代码可以在其他语言首选项(如tabela1,tabelle1 …)中使用。 如果我引用“Sheet1”,当用户使用不同的语言设置excel时,新build的工作簿将会有一个不同名称的工作表。

问题:我该如何解决这个问题?

已经尝试:而不是原来的:

w2.Sheets("Sheet1").Range... 

我试过使用:

 w2.Worksheets(1).Range... 

但显然这是行不通的(下标超出范围错误)

Obs1:我也尝试添加一个新的工作表到新的工作簿中,并且指定了一个名字,并且把代码保留为原始的,但是这种方法并没有那么优雅。

Obs2:代码的相关部分是将标识符,date和内容数组粘贴到新表的位置。

代码:

 Function ArrayFiller(arr As Variant, arr0 As Variant, y As String, Optional ind As Boolean) As Variant Dim lRow As Long, lColumn As Long Dim w2 As Workbook Dim w3 As Workbook Dim d As Date, d1 As Long, d2 As Long Dim CompArray() As Variant Workbooks.Add Set w2 = ActiveWorkbook For lRow = LBound(arr, 1) To UBound(arr, 1) For lColumn = LBound(arr, 2) + 1 To UBound(arr, 2) If arr(lRow, lColumn) <> "" And arr(lRow, lColumn - 1) = "" Then If arr0(lRow, lColumn) <> "" And arr0(lRow, lColumn) <> "--" Then arr(lRow, lColumn - 1) = arr0(lRow, lColumn) w2.Worksheets(1).Cells(lColumn - 1, lRow).Interior.Color = RGB(255, 0, 0) ElseIf arr0(lRow, lColumn) = "" Or arr0(lRow, lColumn) = "--" Then arr(lRow, lColumn - 1) = arr(lRow, lColumn) w2.Worksheets(1).Cells(lColumn - 1, lRow).Interior.Color = RGB(255, 0, 0) End If End If Next Next w2.Sheets("Sheet1").Range("A1").Resize(UBound(arr, 2), UBound(arr, 1)).Value = Application.WorksheetFunction.Transpose(arr) Columns(2).EntireColumn.Delete Rows(2).EntireRow.Delete d = Application.WorksheetFunction.WorkDay(w2.Sheets("Sheet1").Range("A3"), -1) w2.Sheets("Sheet1").Range("A2") = d w2.SaveAs Filename:=ThisWorkbook.path & "\" & "Output" & y, FileFormat:=6 CompArray() = w2.Worksheets(1).UsedRange.Value w2.Close True d1 = UBound(CompArray, 1) d2 = UBound(CompArray, 2) If ind = True Then Workbooks.Add Set w3 = ActiveWorkbook For lRow = LBound(CompArray, 1) + 1 To UBound(CompArray, 1) For lColumn = LBound(CompArray, 2) + 1 To UBound(CompArray, 2) If CompArray(lRow, lColumn) <> "" And CompArray(lRow, lColumn) <> "--" Then w3.Worksheets(1).Cells(lRow, lColumn).Value = 1 Else w3.Worksheets(1).Cells(lRow, lColumn).Value = 0 End If Next Next Columns(1).EntireColumn.Insert Rows(1).EntireRow.Insert w3.Sheets("Sheet1").Range("A2:A" & d1 + 1).Value = CompArray w3.Sheets("Sheet1").Range("B1").Resize(1, d2).Value = CompArray w3.SaveAs Filename:=ThisWorkbook.path & "\OutputComposite", FileFormat:=6 w3.Close True Else End If End Function 

有任何想法吗?

这工作: Sheets(1).Range("A1").Value = 10

编辑:但是,当以这种方式引用图纸时,用户可以更改图纸的顺序时要小心