2016-08-29 7 views
2

Ich habe einen einfachen Code erstellt, um die aktive Zelladresse in eine andere Zelle zu platzieren.Auswählen, welche Zellen aktive Zellen sein können

`Sheets("ESM").Range("K16").Value = ActiveCell.Address` 

Ich mag würde die Zellen begrenzen, die mit diesem Code arbeiten (z N5: AR7), aber kann es nicht ganz geklappt. Ich nehme an, dass ich irgendwie den Bereich mit etwas wie "Dim MyRange" oder ähnlichem definieren muss.

Würde jemand Hilfe befürworten?

Antwort

0

wickeln Sie Ihre Code in einen Zustand:

If Not Intersect(ActiveCell, Range("N5:AR7")) Is Nothing Then 
    Sheets("ESM").Range("K16").Value = ActiveCell.Address 
End If 
+0

Dank JulianYour Lösung perfekt – KennyG1968

+0

Verstand arbeitete meine Antwort die richtige Kennzeichnung ? –

0

Die Intersect() Methode wird ein Range-Objekt zurück, das den Schnittpunkt zweier darstellt, oder mehr reicht.

Um dies zu erklären, kopieren Sie einfach das folgende Makro und fügen Sie es in ein beliebiges Standardmodul ein. Stellen Sie dann sicher, dass sich die aktive Zelle in N5:AR7 befindet, und führen Sie den Code aus. Es wird die Adresse der aktiven Zelle zurückgegeben.

Sub TryMe() 
    MsgBox Intersect(ActiveCell, Range("N5:AR7")).Address 
End Sub 

Wenn die aktive Zelle nicht innerhalb N5:AR7 eine Laufzeit Fehler ist auftritt.

Das Nichts Schlüsselwort wird hauptsächlich verwendet, um den Standard von Nichts eine Objektvariable löschen zurück.

können wir Code wie unten an gezeigt verwenden, um die Laufzeitfehler verhindern wir bekommen, wenn/falls die aktive Zelle nicht N5:AR7 schneidet:

Sub TryMeAgain() 
    If Intersect(ActiveCell, Range("N5:AR7")) Is Nothing Then 
     MsgBox "The active cell does NOT Intersect A1:A10" 
    Else 
     MsgBox "The active cell does Intersect A1:A10" 
    End If 
End Sub 
Verwandte Themen