簡體   English   中英

運行時錯誤9 VBA-將數據行從一個工作表復制到同一工作簿中的另一工作表

[英]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_DataNew_Data (這就是觸發器一個錯誤)。

如果您希望Orig_DataNew_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.

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