![](/img/trans.png)
[英]VBA Error: Runtime Error: 9 - Subscript out of range when copying a worksheet from another workbook
[英]RunTime Error 9 VBA- Copying a row of data from one worksheet to another within the same workbook
這是我第一次用Visual Basic編寫程序。 我正在嘗試編寫一個程序,該程序采用原始數據工作表(第17頁),對這些數據進行適當的排序,然后將良好的數據行復制到工作簿中的另一張表中。
我的代碼如下:
Private Sub CommandButton1_Click()
Dim First_Row As Integer
Dim Last_Row As Integer
Dim i, j, k, m As Integer
Dim Bad_Cell As Boolean
Dim Orig_Data As Worksheet
Dim New_Data As Worksheet
Dim Orig_Range As Range
Dim New_Range As Range
Set Orig_Data = Worksheets("17")
Set New_Data = Worksheets("18")
First_Row = Application.InputBox _
(Prompt:="Please enter the row where data filtering will start", _
Title:="Filter", Type:=1)
If First_Row = 0 Then
Exit Sub
Else
Last_Row = Application.InputBox _
(Prompt:="Please enter the row where data filtering will end", _
Title:="Filter", Type:=1)
If Last_Row = 0 Then
Exit Sub
End If
End If
i = First_Row
m = 2
Do
j = 2
k = 1
Do
Bad_Cell = WorksheetFunction.IsNumber(Cells(i, j))
If Bad_Cell = False Or Cells(i, j) = 0 Then
Cells(i, 1) = Cells(i, 1) + 1 / 24
j = 2
k = k + 1
Else
j = j + 1
End If
Loop While j <= 18 And k < 15
Set Orig_Range = Workbooks("Calorimeterics").Orig_Data.Range(Cells(i, 1), Cells(i, 18))
Set New_Range = Workbooks("Calorimeterics").New_Data.Range(Cells(m, 1), Cells(m, 18))
If k < 15 Then
Orig_Range.Copy
New_Data.Activate
New_Range.Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
i = i + 1
m = m + 1
Else
i = i + 1
End If
Loop While i <= Last_Row
End Sub
我的問題出現在試圖將一行從工作表17復制並粘貼到工作表18的時候。我遇到“運行時錯誤9下標超出范圍”。 我已經看過對類似問題的其他回答,但是我沒有運氣。
嘗試對Cells
對象使用完全限定的名稱(請指定工作表所屬的工作表):
更改
Set Orig_Range = Workbooks("Calorimeterics").Orig_Data.Range(Cells(i, 1), Cells(i, 18))
Set New_Range = Workbooks("Calorimeterics").New_Data.Range(Cells(m, 1), Cells(m, 18))
至
Set Orig_Range = Orig_Data.Range(Orig_Data.Cells(i, 1), Orig_Data.Cells(i, 18))
Set New_Range = New_Data.Range(New_Data.Cells(m, 1), New_Data.Cells(m, 18))
您的代碼還有一件事:
當您使用Workbooks("Calorimeterics").Orig_Data
,Excel嘗試找到物業 Workbooks("Calorimeterics")
與名Orig_Data
但是, Workbooks("Calorimeterics")
不支持name屬性Orig_Data
或New_Data
(這就是觸發器一個錯誤)。
如果您希望Orig_Data
和New_Data
來自“量熱學”工作簿,請同時進行更改
Set Orig_Data = Worksheets("17")
Set New_Data = Worksheets("18")
至
Set Orig_Data = Workbooks("Calorimeterics").Worksheets("17")
Set New_Data = Workbooks("Calorimeterics").Worksheets("18")
但請確保在代碼運行時打開“量熱學”工作簿。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.