2016-05-04 7 views
0

Ich mag verwenden:Wie eine Reihe von Zellen auszuwählen, mit zwei Variablen in VBA

Set rng1 = .Range("A1") 
    Set rng2 = .Range("C3") 

wie in diesen link diskutiert. Das OP hatte Zelle A1 und Zelle C3 als zwei getrennte einzellige Bereiche. Er fragte, wie man die Reichweite ändern könnte, so dass alle dazwischen liegenden Zellen ebenfalls in einem neuen größeren Bereich enthalten sind. Mein Problem ist ähnlich, aber mein Zellenbereich ändert sich mit jedem neuen Szenario. Beispiel # 1 Anfangsdatum in Zelle D1 und Enddatum in Zelle Y1, neuer Bereich ist D1: Y1; oder Beispiel # 2 Startdatum in Zelle B1 und Enddatum in Zelle AZ1, neuer Bereich ist B1: AZ1. Wie kann ich den obigen Code ändern, so dass eine Variable anstelle eines statischen Bereichs verwendet werden kann?

+1

Wissen Sie, dass Sie dies ohne VBA mit bedingter Formatierung tun können? – trincot

+0

Ja, aber diese Idee hat andere Anwendungen in meinem Modell wie das Schreiben einer Formel für eine Reihe von Bedingungen und danach eine weitere Reihe von Bedingungen. – lindqmx1

+0

Auch das scheint ohne VBA möglich zu sein, mit In-Cell-Formeln. – trincot

Antwort

0

Ich bin mir nicht sicher, ob ich die Frage richtig verstanden habe. So haben Sie einen Blick auf die folgenden und lassen Sie mich wissen, ob dies Ihr „Problem“ löst:

Option Explicit 

Public Sub tmpTest() 

Dim rng1 As Range 
Dim rng2 As Range 
Dim rngComposite As Range 

With ThisWorkbook.Worksheets(1) 
    Set rng1 = .Range("A1") 
    Set rng2 = .Range("C3") 
    Set rngComposite = .Range(rng1, rng2) 
    Debug.Print rngComposite.Address 
End With 

End Sub 

Wesentlichen der Bereich .Range(rng1, rng2) ist so dynamisch wie die zugrunde liegenden Bereiche und wird jedes Mal ändern, dass rng1 oder rng2 Änderungen .

+0

Ralph, vielen Dank. Ich habe deinen Code einfach in meinem Code ausgeführt. In Ihrem Beispiel wird Rng1 immer Zelle A1 sein? Wie mache ich A1 stattdessen eine variable Zelladresse? Der Bereich ändert sich in jedem Szenario, das ich ausführe. – lindqmx1

+0

Verstehe ich den obigen Code falsch? .Range ("C3") ist immer Zellreferenz C3, richtig? Wie kann C3 eine Variable sein, die ich in einem vorherigen Schritt deklarieren kann? Vielen Dank. – lindqmx1

+0

'rng2' ist die Variable nicht' C3'. Also, ja, oben setze ich 'rng2' auf' C3'. Aber das gute Denken über ** Variablen ** ist, dass Sie sie ändern können. Sie können es ändern, um auf "D1" oder was auch immer Sie wollen, zu verweisen. Trotzdem ist es egal, welchen Bereich Sie wollen. Irgendwann in Ihrem Code müssen Sie schreiben, was Sie wollen ('C3' oder' D1' oder was auch immer). – Ralph

Verwandte Themen