2017-06-14 2 views
0

So versuche ich ein paar Makros zu schreiben, wo ich verschiedene verschiedene Bits auf einem Arbeitsblatt wie Löschen von Inhalten und Neuanordnen anpassen. Wenn das betreffende Blatt "HAUPTBLATT" ausgewählt ist (auf dem Bildschirm geöffnet), funktionieren die Makros einwandfrei. Wenn ich versuche, sie über eine Makroschaltfläche auf einem anderen Blatt auszuführen, interagieren sie offensichtlich automatisch mit dem betreffenden aktiven Blatt.Select Active Sheet scheint nicht zu funktionieren

ich einen Bereich für die Herstellung der verschiedenen Befehle haben versucht, ein Blatt aktiv/Auswahl, aber jedes Mal mit Laufzeitfehler aufkommt 9

Jede Hilfe zu welchem ​​dummen Fehler ich mache würde viel sein geschätzt!

Die aktuelle Inkarnation einer der Codes unter

Sub sbClearMainSpreadsheet() 
Worksheets("MAIN SHEET").Range("A1:X999").Select 

Range("A2:F500").ClearContents 
Range("J2:O500").ClearContents 
Range("R2:Y500").ClearContents 
Range("A2:Y500").Interior.Color = xlNone 

If MsgBox("Are you sure you want to clear the Main Spreadsheet?", vbYesNo) = vbNo Then Exit Sub 

End Sub 

dank

A

+0

Try ... Sheets ("Großschot") ... statt – Skaterhaz

+0

Ist das Arbeitsblatt, das die Schaltfläche in einer anderen Arbeitsmappe enthält, um Ihre "Hauptblatt"? (Das ist der einzige Grund, warum ich mir vorstellen kann, dass der gepostete Code den Fehler ergeben würde, den Sie bekommen.) – YowE3K

+0

Siehe [Ist der. in .Range erforderlich, wenn durch .Cells definiert?] (https://stackoverflow.com/questions/36368220/is-the-in-range-necessary-with-defined-by-cells) für verwandte Informationen – Jeeped

Antwort

2

Statt Select die „Großschot“, es ist besser, wenn Sie voll qualifizierte Objekte verwenden.

Ich glaube, Sie Ihren Code gemeint unten etwas wie der Code aussehen:

Sub sbClearMainSpreadsheet() 

    ' have the input confirmation box before clearing the contents (not after) 
    If MsgBox("Are you sure you want to clear the Main Spreadsheet?", vbYesNo) = vbNo Then Exit Sub 

    With Worksheets("MAIN SHEET") 
     .Range("A2:F500, J2:O500, R2:Y500").ClearContents 
     .Range("A2:Y500").Interior.Color = xlNone 
    End With 


End Sub 
+2

Vielleicht sogar '.Range (" A2: F500, J2: O500, R2: Y500 "). ClearContents' ...? – Jeeped

+0

@Jeeped dass w Kind noch besser sein;) Ich bin jetzt nicht vor meinem PC, ich werde es später aktualisieren. –

Verwandte Themen