Frage

Ich schreibe eine Excel Addin von .net COM Interop verwenden. Ich habe einen Befehl, der einen Dialog erscheint, und aus dem Dialog ich einige Arbeiten wie Daten aus dem verwendeten Bereich mehrerer Blätter zu sammeln. Das Problem ist, dass, wenn eine Zelle im Bearbeitungsmodus befindet, werden einige der Anrufe, die ich brauche, um Ausnahmen zu werfen. Ich möchte eine Art und Weise zu bestimmen, bevor Hand, die Excel im Bearbeitungsmodus befindet, so dass ich den Benutzer warnt, kann zuerst die Bearbeitung die Zelle zu beenden.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Es gibt eine Application.Ready Eigenschaft, die Sie soll diese Informationen geben, aber in der Praxis funktionieren sie nicht zuverlässig. Siehe hier für eine hackaround.

Sie können auch bei Einstellung Application.Interactive = false aussehen wollen, während .net Code seiner Sachen tut.

Andere Tipps

Versuchen Sie, diese Funktion:

    Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
        If exapp.Interactive = False Then
            Return False
        Else
            Try
                exapp.Interactive = False
                exapp.Interactive = True

                Return False
            Catch
                Return True
            End Try
        End If
    End Function

Sie erwähnen nicht, welche Sprache Sie verwenden. SZL der Funktion ist in VB geschrieben. Da ich C # bin mit hatte ich es zu konvertieren. Hat super funktioniert. Hier ist das Äquivalent C # -Code.

    bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
    {
        if (exapp.Interactive == false)
        {
            return false;
        }
        else
        {
            try
            {
                exapp.Interactive = false;
                exapp.Interactive = true;
                return false;
            }

            catch
            {
                return true;
            }
        }

    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top