2017-05-08 5 views
0

Ich möchte den Inhalt eines Zellbereichs löschen "D8: I13", dann den gleichen Bereich, aber 15 Zeilen niedriger, dann weitere 15 Zeilen darunter und so 55 mal. Ich schrieb den Code aber die Fehlermeldung erscheint: Laufzeitfehler 1004 (Methode ‚Range‘ von object'_Global‘failed)Löschen nicht zusammenhängender Zellbereiche (Laufzeitfehler 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 

Antwort

0

I Cells finden Verwendung einfacher:

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

die crylic Zeichen Fix :) –

+1

wusste, dass ich jemand würde das kommentieren, also habe ich SO gegoogelt und gesucht. Vielleicht sollte ich eine neue Frage stellen - wie reparierst du kryptische Zeichen auf einem Computer, der enger als ein, äh, sehr tightes Ding ist. –

0

-Code wird nicht funktionieren, es sei denn, Sie einige Platzierungen ändern und einige Änderungen tun.

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 

Vor allem, wenn Sie Variablen definieren als A und B auf Ihrem Beispiel, wenn Sie sie in Anführungszeichen wie A setzen = „8 + n * 15“ dann wird dies ein String nicht eine Zahl. Sie sollten es in A = 8 + n * 15 ändern und Sie sollten es nach der Do-Schleife verschieben, sonst können Sie nur die erste Entfernung löschen.

Dann ("D" + A + ": I" + B + "") ist auch völlig falsch. Sie sollten & verwenden, um Ihre Variablen mit tatsächlichen Bereichen zu trennen. Wenn Sie Ihrer Variablen einige Werte hinzufügen möchten, können Sie das Zeichen + verwenden. (Zum Beispiel ("D" & A + 1 & ":I" & B - 1)

0

Versuchen Sie den Code unten, es gibt keine Notwendigkeit Activate das Blatt zu verwenden, bevor es seinen Inhalt löschen, verwenden Sie stattdessen nur voll qualifed Range Syntax wie:. book1.Worksheets("Лист1").Range("D" & A & ":I" & B).ClearContents

Erklärung in den Code als Kommentare

.

-Code

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

Ok ich hier ein paar Fehler sehen:

  • Ihre Codierung weiß nicht, was n ist. Es wurde nicht definiert
  • A und B sind keine Zeichenfolgen, sie sind Zahlen.
  • Ihre Formeln für A und B sind außerhalb Ihrer Schleife. Und als solche nicht erhöhen, wie n tut

den folgenden Code Versuchen:

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 
Verwandte Themen