Excel, VBA, .ClearContents avec plage référencée, erreur 1004

J'essaie d'utiliser .clearcontents sur la gamme qui est référencé par un certain .offset, et j'ai des problèmes

Je sais que cela fonctionne

Sub clear1_1() Workbooks("xyz").Sheets("abc").range("A2:A3").ClearContents End Sub 

mais si j'essaie, ça ne fonctionne pas

 Sub clear2() Dim region As range Set region = range("S509:AD618") Workbooks("xyz").Worksheets("abc").range(region).ClearContents end sub 

Je comprends d'autres publications, qu'il a quelque chose à voir avec le défi des objects, mais je n'ai aucune idée de l'erreur que je dois faire pour écrire.

La macro finale est exécutée à partir d'un classur et est censée: .contrements flottants dans d'autres classurs non activés.

Mon code ressemble à ceci

 sub Macro() ..... ton of code Dim filename as ssortingng dim sheetname as ssortingng dim address3, address4 as ssortingng filename = "xyz" sheetname = "abc" ' both variables that are loaded in other part address3 and address4 loaded in other part 'here is where i get the error sheets(sheetname).Range(Range(address3).Offset(0, 12).Address & ":" & Range(address4).Offset(-1, 23)).ClearContents end sub 

Je peux probablement le contourner avec .value = "" Mais je cherche à apprendre. Nous vous remercions de toute réponse à l'avance.

EDIT 1 Bonjour Scott, ne le fait pas. Publication d'une plus grande partie de mon code

 If mapanchorsuccess = True And map1success = True And map2success = True Then If Workbooks(Filename).Sheets(startws).Range(address1).Offset(10, 13).HasFormula = True Then With Workbooks(wbm).Sheets("Report") 'report .Range("A" & reportrow).Value = runnumber .Range("B" & reportrow).Value = Filename .Range("C" & reportrow).Value = Workbooks(Filename).Sheets(startws).Name .Hyperlinks.Add anchor:=.Range("D" & reportrow), Address:=FilePath & Filename, SubAddress:=Workbooks(Filename).Sheets(startws).Name & "!A1" .Range("E" & reportrow).Value = "Error" .Range("F" & reportrow).Value = "rolling probably done already in this sheet" reportrow = reportrow + 1 End With Else With Workbooks(Filename).Sheets(startws) .Range(Range(address1).Offset(0, 12).Address & ":" & Range(address2).Offset(0, 14).Address).Copy _ Range(Range(address1).Address & ":" & Range(address2).Offset(0, 2).Address) Application.CutCopyMode = False .Range(Range(address1).Offset(0, 16).Address & ":" & Range(address2).Offset(0, 16).Address).Copy _ Range(Range(address1).Offset(0, 3).Address & ":" & Range(address2).Offset(0, 23).Address) Application.CutCopyMode = False With Workbooks(wbm).Sheets("Report") 'report .Range("A" & reportrow).Value = runnumber .Range("B" & reportrow).Value = Filename .Range("C" & reportrow).Value = Workbooks(Filename).Sheets(startws).Name .Hyperlinks.Add anchor:=.Range("D" & reportrow), Address:=FilePath & Filename, SubAddress:=Workbooks(Filename).Sheets(startws).Name & "!A1" .Range("E" & reportrow).Value = "Completed" .Range("F" & reportrow).Value = "region1 rolled forward" reportrow = reportrow + 1 End With .Range(Range(address3).Offset(0, 12).Address & ":" & Range(address4).Offset(-1, 23).Address).Copy _ Range(Range(address3).Address & ":" & Range(address4).Offset(-1, 11).Address) '///// here the error 1004 occurs .Range(Range(address3).Offset(0, 12).Address & ":" & Range(address4).Offset(-1, 23).address).clearcontent End With End If End If 

Le classur et la feuille doivent être configurés avec la variable.

Ensuite, lorsque vous l'utilisez, car il s'agit d'une gamme elle-même, il suffit de s'y référer.

 Sub clear2() Dim region As range Set region = Workbooks("xyz").Worksheets("abc")range("S509:AD618") region.ClearContents end sub 

En ce qui concerne votre prochain code; C'est un problème différent. Les plages comsockets dans le () doivent être atsortingbuées à la parenthèse de la feuille correcte ou utiliser la feuille active.

Le plus simple est avec un bloc With :

 With sheets(sheetname) .Range(.Range(address3).Offset(0, 12), .Range(address4).Offset(-1, 23)).ClearContents End With