Versuch zur Rückkehr eine Bandbreite als Funktion Ausgabe, type mismatch?
Die folgende Funktion gibt eine "Typenkonflikt". Ich verstehe nicht, wie ich die Aufmerksamkeit auf die Verwendung der "Set" - Anweisung, um die Rücksendung meiner resultierende Spektrum.
Ich gedebuggt die Funktion, bekomme ich eine richtigen Bereich, um zurückzukehren, so dass das problem woanders liegt.. Hmmmm...
Function getVals(column As String) As Range
Dim col As Variant
col = Application.Match(column, ThisWorkbook.ActiveSheet.Range("1:1"), 0)
Dim rng As Range
Set rng = ThisWorkbook.ActiveSheet.Cells(1, col)
Set rng = rng.Offset(1, 0)
Set rng = Range(rng, rng.End(xlDown))
Set getVals = rng
End Function
Vielen Dank im Voraus Jungs für jede Hilfe 🙂
UPDATE : ich bin auf der Suche, wie sende ich die Ergebnisse als ein array. Ich versuchte Kombinationen von der Funktion zurückgeben "Variante"/Variante"()" geben, übergeben rng.value2 als Ergebnis, aber kein Erfolg.
Es ist nicht eine gute Idee zu verwenden
Mit mehreren Menschen, die versuchen zu finden, Ihr problem ohne Erfolg, ich denke, es ist zu versuchen, für mehr Informationen. Zum Beispiel: (1) Die Anweisung geben, einen Typenkonflikt? (2) Was bedeutet Zeile 1 enthalten?
Zeile 1 enthält die Spaltenüberschriften. Ich sehe Sie, und das Ziel ist die Rückkehr der Werte unter dem angepassten header.
Der type mismatch passiert zur Laufzeit, auf die Letzte Aussage, auch wenn mein rng-Bereich eingestellt ist, um die voraussichtliche Reichweite... ich verstehe es nicht.
In diesem Fall, vielleicht ist das problem tatsächlich nicht in dieser Formel aber wo Sie es sind. Wie nennst du es? Ich habe versucht, das testen Sie Ihren code auf verschiedene weisen und das einzige mal, bekomme ich einen type mismatch Fehler wenn ich übergeben Sie eine ungültige Spalte string.
column
als variable Namen gegeben Column
ist Teil des Excel-ObjektmodellsMit mehreren Menschen, die versuchen zu finden, Ihr problem ohne Erfolg, ich denke, es ist zu versuchen, für mehr Informationen. Zum Beispiel: (1) Die Anweisung geben, einen Typenkonflikt? (2) Was bedeutet Zeile 1 enthalten?
Zeile 1 enthält die Spaltenüberschriften. Ich sehe Sie, und das Ziel ist die Rückkehr der Werte unter dem angepassten header.
Der type mismatch passiert zur Laufzeit, auf die Letzte Aussage, auch wenn mein rng-Bereich eingestellt ist, um die voraussichtliche Reichweite... ich verstehe es nicht.
In diesem Fall, vielleicht ist das problem tatsächlich nicht in dieser Formel aber wo Sie es sind. Wie nennst du es? Ich habe versucht, das testen Sie Ihren code auf verschiedene weisen und das einzige mal, bekomme ich einen type mismatch Fehler wenn ich übergeben Sie eine ungültige Spalte string.
InformationsquelleAutor BuZz | 2012-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zurück, die Ihre Ergebnisse als ein array von Werten, ändern Sie einfach die return-Typ zu
Variant
und zurückrng.Value
. Der folgende code funktioniert für mich, solange die übergebenencolumn
string existiert inThisWorkbook.ActiveSheet.Range("1:1")
.InformationsquelleAutor mischab1
Sind Sie immer, dass Fehler da Match ist nicht in der Lage zu finden, was Sie wollen und damit Ihren rng Bewertung zu "nichts" 🙂
Betrachten Sie diesen code
Ich sehe. Was passiert, wenn Sie mein test-code oder Tony ' s code?
Nur getestet einmal mehr, die gleichen Probleme wie ich haben (unsere Quellen sind nahezu identisch)
InformationsquelleAutor Siddharth Rout
Erstens verstehe ich nicht, was Sie tun. Sie haben einen parameter
column
aber Sie sind auf der Suche für eine Zelle in Zeile 1, die diesen Wert enthält. Zum Beispiel, wenn Spalte = 23, P1 enthält 23, die Passen sollte, zurückgeben 16.Ihre routine schlägt fehl, denn wenn das Match ausfällt, col festgelegt ist
Error 2042
. Sollten Sie testen, col, bevor Sie es als eine Zahl.In meinem test habe ich gesetzt, Zeile 1, Nummern in zufälliger Reihenfolge ab. Mein Match ist fehlgeschlagen, da die Zelle P1 enthaltenen Nummer 23 aber die variable Spalte enthält string "23". Wenn ich umgegliedert Spalte so Lange, das Match gearbeitet.
Ich bin unglücklich mit Siddharth Verwendung von
On Error
. Ich weiß nicht, wie zu verwendenOn Error
für Fehler, die ich erwarten. Ich würde testen, col numerisch nach dem Spiel.Rout. Meine Bemerkung klingt Kritischer als ich beabsichtigte. Ich habe da bemerkt, dass Sie in der Regel auch
On Error
. Ich Schätze, wir sollten planen für das unerwartete. Meine einzige Kritik ist, Sie nicht erklären, warum. Und wir haben die OP ' s Aufmerksamkeit, und ich glaube, wir sollten mehr im hintergrund, Kontext und Beratung, als Sie unbedingt brauchen, weil dies wird Ihnen helfen, entwickeln und zu wachsen. Ich habe gelernt, in einem frühen Alter die Kosten nicht die überprüfung für Fehler. Vielleicht habe ich über es tun, aber meine obsessive Fehler überprüfen hilft zu isolieren, die Ursache der Probleme. Dies ist eine Lektion, die ich versuchen, pass auf die nächste generation.Ich Stimme mit Ihrer Sicht 🙂 Werde versuchen, mehr Kommentare in den code das nächste mal. Vielen Dank für die Konstruktive Kritik 🙂
Danke, aber ich denke, dass das nicht die Ursache für mein Problem. Spalte ist ein string, also das Verhalten, das Sie beschrieben, in Erster Linie ist das eine gerichtet. Ich bin mir bewusst, dass meiner nicht-handling-Fehler 2042, aber das Problem ist sonst hier.
InformationsquelleAutor Tony Dallimore
Andere Menschen sind schneller beim schreiben, dann bin ich es. 🙂 Es gibt eine andere Möglichkeit, die noch nicht erwähnt worden noch.
Da Sie nicht die Fehlermeldung erhalten, beim Debuggen, das Problem könnte die Verwendung von
ActiveSheet
. Wenn das falsche Arbeitsblatt aktiv ist, dann Spiel den Fehler verursachen, wie bereits von den anderen Antworten.Wenn Sie explizite, tritt der Fehler weggeht?
InformationsquelleAutor mischab1