2016-04-18 8 views
1

diese Erklärung gegeben:Warum kann ich diesen Bereich nicht als Variable übergeben?

Dim myRange As Range 
Set myRange = Sheets("Dashboard").Range("$J$3:$K$9") 

Warum funktioniert das nicht?

mySub (myRange) 

Ja, das ist das?

mySub (Sheets("Dashboard").Range("$J$3:$K$9")) 

Als ich vorbei myRange versuchen bekomme ich nur Run-time error '424': Object required

+0

Versuchen Sie, ein 'call' infront hinzuzufügen? – findwindow

+0

Das hat es behoben. Kannst du erklären warum? In einer Antwort vielleicht? –

+0

Syntax. Wenn du 'mySub myRange' tust, denke ich, dass das auch funktionieren wird. – findwindow

Antwort

3

Tropfen die Pars.

mySub myRangePassedByReference 

durch das Argument in Klammern umschließen, sind Sie Kraft-Passing es ByVal:

mySub (myRangePassedByValue) 

... auch wenn mySub den Parameter ByRef nimmt implizit oder explizit (ByRef der Standard ist, wenn kein Modifikator angegeben ist).


Wie in den Kommentaren vorgeschlagen, könnten Sie ein Call Schlüsselwort vor hinzuzufügen, aber beachten Sie, dass Call seit etwa 20 Jahren überholt worden ist, so kann das nicht tun.

+0

Oh. Ich mag 'call' XD Macht deutlich, dass ich ein anderes Sub anrufe. – findwindow

+0

@findwindow Startvorgang Namen mit einem Verb tut auch das ;-) –

+0

Ich denke. In einem Meer von Code möchte ich "call" haben, denn wenn es keine Parameter gibt, sieht es nur aus wie ein zufälliges Wort, das du kennst? XD – findwindow

Verwandte Themen