Vom Chart auf Tabelle zugreifen ohne select.?

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Vom Chart auf Tabelle zugreifen ohne select.?

    Hallo,

    hab mal eine kleine Frage..

    Erstmal ein Codefetzen:

    Visual Basic-Quellcode

    1. Function TextInSpalte(strColumns As String, strSpalte As String, objwks As Worksheet)
    2. Dim strLaenge As String
    3. Dim intLaenge As Integer
    4. Dim i As Integer
    5. strLaenge = objwks.Range(strSpalte & "2").Value
    6. intLaenge = Len(strLaenge)
    7. For i = 1 To intLaenge - 1
    8. objwks.Columns(strColumns & ":" & strColumns).Insert Shift:=xlToRight
    9. Next i


    Jetzt meine Frage:
    Wieso kann ich, wenn gerade ein Chartfenster aktiv ist obenstehenden Code nicht ausführen? Lustig ist auch das Excel(2003) dieses

    Visual Basic-Quellcode

    1. strLaenge = objwks.Range(strSpalte & "2").Value
    noch macht aber bei

    Visual Basic-Quellcode

    1. objwks.Columns(strColumns & ":" & strColumns).Insert Shift:=xlToRight
    "Typen unverträglich" ausspuckt. Klicke ich aber nun auf ein Tabellenblatt (egal welches, hauptsache kein Chart) läuft der Code sauber durch..
    Kann mir das einer erklären?
    Ich optimiere gerade meinen Code und versuche alle .select Anweisungen zu killen.

    Gruß
    Thorsten

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dw.katze“ ()

    Hi.

    Der Fehler entsteht m.E. durch das Fehlen von Zellen - die Variable objwks wird wahrscheinlich beim Aktivieren eines Arbeitsblattes mit dem "aktuellen" Arbeitsblatt belegt. Da ein Chart keine Zellen hat (wie ein normales Worksheet), läuft der Aufruf von .Range() bzw. .Columns() ins Leere. Abhilfe schafft da eventuell eine Abfrage zu Beginn, um welchen Typ von Arbeitsblatt es sich handelt.
    Gruß
    hal2000
    hallo hal,
    danke für deinen beitrag. leider hast du da was überlesen..
    Zitat:
    "Lustig ist auch das Excel(2003) dieses



    Visual Basic-Quellcode

    1. strLaenge = objwks.Range(strSpalte & "2").Value


    noch macht aber ...."

    also, er liest den korrekten zelleninhalt noch ein... nur zellen einfügen macht er dann leider nicht mehr... :wacko:

    trotzdem danke für deine hilfe!

    gruß
    thorsten


    Edit
    Zitat:"die Variable objwks wird wahrscheinlich beim Aktivieren eines Arbeitsblattes mit dem "aktuellen" Arbeitsblatt belegt"
    objwks kommt von einer for each schleife in welcher die funktion aufgerufen und der wert übergeben wird.
    /Edit

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „dw.katze“ ()

    Wird der Code denn anstandslos ausgeführt, wenn du dich gerade nicht in einem Chart befindest?

    Laß mich mit einem Zitat antworten: "Klicke ich aber nun auf ein Tabellenblatt (egal welches, hauptsache kein Chart) läuft der Code sauber durch.."

    ich hab heute den "fehler" gefunden.. eigentlich ist es kein fehler sondern excel stellt sich da ein bissel an... :pinch:
    mache ich aus der anweisung:

    Visual Basic-Quellcode

    1. objwks.Columns(strColumns & ":" & strColumns).Insert Shift:=xlToRight



    diese:

    Visual Basic-Quellcode

    1. objwks.range(strColumns & ":" & strColumns).Insert Shift:=xlToRight



    zickt excel nicht mehr rum.. k.a. warum excel mit der einen sache ein problem hat mit der anderen aber nicht.. bin auf jedenfall froh, dass ich es hinbekommen hab! :thumbsup:


    gruß
    thorsten