2017-05-08 83 views
0

我要刪除的單元格範圍中的內容「D8:I13」,然後相同的範圍內,但15行以下,則下面的另一個15行等55次。 我寫的代碼,但錯誤彈出:運行時錯誤1004(的object'_Global」法「範圍」失敗)刪除非連續單元的範圍(運行時錯誤1004)

Sub удалитьссылки() 
    Dim book1 As Workbook 
    Dim A As String 
    Dim B As String 

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") 
    A = "8+n*15" 
    B = "13+n*15" 

    'переходим в активную страницу откуда надо скопировать данные 
    book1.Worksheets("Лист1").Activate 

    n = 0 
    Do Until n = 55 

    Range("D" + A + ":I" + B + "").Select 
    Selection.ClearContents 
    n = n + 1 
    Loop 


    End Sub 

回答

0

我發現使用Cells簡單:

Sub Test() 

    Dim book1 As Workbook 
    Dim StartRow As Long, EndRow As Long 
    Dim LoopNum As Long 

    Set book1 = Workbooks.Open("E:\Super M\?????? ??????\???????\??????.xlsx") 

    With book1.Worksheets("????1") 
     Do Until LoopNum = 55 
      'Cells uses row number & column number. 
      '.Range(StartCell, EndCell) creates a range between the two cells. 
      .Range(.Cells(8 + (LoopNum * 15), 4), .Cells(13 + (LoopNum * 15), 9)).ClearContents 
      LoopNum = LoopNum + 1 
     Loop 
    End With 

End Sub 
+0

修復丙稀酸字符:) –

+1

我知道有人會對此發表評論,所以我搜索了Google搜索。也許我應該開始一個新的問題 - 你如何在一臺計算機上修復低級字符,這個計算機的密度比那個非常緊密的東西更緊密。 –

0

,除非你改變一些展示位置,並做一些編輯的代碼將無法正常工作。

Sub удалитьссылки() 
'privet! 
     Dim book1 As Workbook 
     Dim A,B,n As Long 


     Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") _ 
     'Or anything like ActiveWorkbook 

     'переходим в активную страницу откуда надо скопировать данные 

     n = 0 
     Do Until n = 55 

     A = 8 + (n * 15) 
     B = 13 + (n * 15) 

     book1.Worksheets("Лист1").Range("D" & A & ":I" & B).ClearContents 

     n = n + 1 
     Loop 


    End Sub 

首先,當你定義變量作爲一個在你的榜樣,如果你把它們放在引號之間像A =「8 + N * 15」,那麼這將成爲一個字符串不一個號碼。您應該將其更改爲A = 8 + n * 15並且您應該在Do循環後移動它,否則您將只能清除第一個範圍。

然後( 「d」 + A + 「​​:I」 + B + 「」)也是完全錯誤的。您應該使用&符號來將您的變量與實際範圍分開。如果您想爲變量添加一些值,則可以使用+符號。 (例如("D" & A + 1 & ":I" & B - 1)

0

嘗試下面的代碼,就沒有必要清理它的內容之前使用Activate紙,而不是僅僅使用完全組隊參加Range語法像:book1.Worksheets("Лист1").Range("D" & A & ":I" & B).ClearContents

解釋代碼註釋裏面

代碼

Option Explicit 

Sub удалитьссылки() 

Dim book1  As Workbook 
Dim n   As Long 
Dim A   As Long ' <-- need to be numeric type, not String 
Dim B   As Long ' <-- need to be numeric type, not String 

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") 

For n = 1 To 55 ' <-- use a simple For loop instead of Do until 
    A = 8 + 15 * (n - 1) ' <-- substract 1 since the first range start from row 8 
    B = 13 + 15 * (n - 1) ' <-- substract 1 since the first range start from row 13 

    book1.Worksheets("Лист1").Range("D" & A & ":I" & B).ClearContents 
Next n 

End Sub 
0

好吧,我可以在這裏看到了一些錯誤:

  • 您的編碼不知道什麼n是。它沒有被定義
  • AB不是字符串,它們是數字。
  • 您的AB公式是你的循環之外。正因爲如此不隨n確實

試試下面的代碼:

Sub удалитьссылки() 
Dim book1 As Workbook 
Dim A,B,n as Long 

Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") 

'переходим в активную страницу откуда надо скопировать данные 
book1.Worksheets("Лист1").Activate 

n = 0 
Do Until n = 55 
    A = 8+(n*15) 
    B = 13+(n*15) 

    Range("D" & A & ":I" & B).ClearContents 
    n = n + 1 
Loop 


End Sub