Testen Sie ob die Palette vorhanden ist, in VBA
Ich habe eine dynamisch definierte benannten Bereich in meinem excel-ss, der packt die Daten aus einer Tabelle, basierend auf einer start-und ein Enddatum, wie dies
=OFFSET(Time!$A$1,IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),1,MATCH(Date_Range_End,AllDates)-IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),4)
Aber, wenn der Datumsbereich hat keine Daten in der Tabelle, das Spektrum nicht vorhanden ist (oder so, idk). Wie kann ich das schreiben von code in VBA zu testen, ob dieses Bereichs existiert oder nicht?
Ich habe versucht, so etwas wie
If Not Range("DateRangeData") Is Nothing Then
aber ich bekomme "Laufzeitfehler 1004, die Methode 'Range' des Objekts '_Global' ist fehlgeschlagen."
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie replizieren die übereinstimmung in Ihren VBA zu zählen, bevor mit der Auswahl, wie viele Zeilen würden Sie haben, oder Sie können die Verwendung von Fehlerbehandlung:
.Number
ist die Standard-Eigenschaft für Err. Sie könnenErr.Number
, aber nurErr
funktioniert einwandfrei.Hier ist eine Funktion, die ich klopfte, um zurückzugeben, ob Sie einen benannten Bereich vorhanden ist. Es könnte Ihnen helfen.
On Error Goto 0
vorEnd Function
?RangeExists = Err.Number = 0
tun?ActiveSheet
ist notwendigActiveSheet.Range(R)
. WennR
ist eine Zeichenfolge, die gibt den Bereich in einem anderen Arbeitsblatt (z.B. mit RefEdit), diese wird abgelehnt, obwohlR
ist eine juristische Reihe. Außerdem denke ich, vielleicht ist es besser,Err.Number
wieder auf 0 vor dem beenden dieser Funktion, so dass der Umfang der Fehler existiert nur innerhalb der FunktionRangeExists
, nicht außerhalb, sagen, wenn Sie anrufen, es in eine unterprozedur.RangeExists = (Err.Number=0)
zurück den richtigen boolean-Wert. Sonst würde es immer wiederfalse
. Die Verwendung Von Excel 365.Dies ist ein weiterer Ansatz. Es hat den Vorteil zu nehmen, den Behälter und den Namen, den Sie testen möchten. Das bedeutet, dass Sie testen können, entweder Blatt-Namen oder die Arbeitsmappe Namen zum Beispiel.
Wie diese:
oder
Abhängig von der Anwendung, die Sie tun, ist es gut zu prüfen, mit einem Wörterbuch. Sie sind besonders nützlich, wenn Sie möchte prüfen, ob etwas vorhanden ist.
Nehmen Sie dieses Beispiel:
Innerhalb Ihrer main-Prozedur, alles, was Sie tun müssen, ist eine Existenz überprüfen Sie vor der Verwendung der Bereich
Beim laden des Wörterbuchs sieht vielleicht ein wenig länger, es ist extrem schnell zu verarbeiten und zu suchen. Es wird auch viel einfacher, zu überprüfen, ob alle benannten Bereich verweisen auf eine gültige Adresse vorhanden ist, ohne die Verwendung einer error-Handler in dieser einfachen Anwendung.
Bitte beachten Sie, dass bei der Verwendung von Namen auf Blatt-Ebene statt auf workbook-Ebene, ist es notwendig, den Einsatz aufwendigerer Schlüssel zur Eindeutigkeit zu gewährleisten. Aus der Art, wie das Wörterbuch wurde erstellt, wenn Sie eine Taste wiederholt wird, wird das Element mit dem Wert überschrieben wird. Das kann vermieden werden durch die Verwendung der gleichen Existiert Methode als check-in die Schlüssel der Schöpfung-Anweisung. Wenn Sie brauchen eine gute Referenz wie die Wörterbücher verwenden, verwenden Sie diese ein.
Glück!