VSTO Excel: ¿Cómo comprobar si se puede seleccionar un rango?

¿Hay alguna forma de verificar si un rango se puede seleccionar (o usar de alguna manera), como algún tipo de validación?

Tengo este problema con VSTO 2.5 SE y Excel 2003. Siempre que elimino estas filas, firstSelectedItem.Select () arroja un error HResult. Bien, ya he descubierto una forma de solucionar este problema, pero estoy buscando una forma "mejor", una comparación sencilla o algo así para ver si firstSelectedItem en realidad se puede seleccionar, o si debería intentar seleccionar algún otro rango.

Aquí está el código de ejemplo.



    using ExcelIntOp = Microsoft.Office.Interop.Excel;

    ExcelIntOp.Range firstSelectedItem = null;

    for (int i = selectedRange.Rows.Count; i > 0; i--)
    {
      firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[1, 1]);

      if (firstSelectedItem.Value2 == null)
          firstSelectedItem.EntireRow.Delete(System.Type.Missing);
    }

    if (firstSelectedItem != null)
      firstSelectedItem.Select();

preguntado el 31 de enero de 12 a las 08:01

1 Respuestas

No puedes Select firstSelectedItem después de haberlo eliminado. Si no quieres comprobar eso firstSelectedItem es válido antes de seleccionar, luego vuelva a apuntarlo a una celda válida después de la eliminación.

for (int i = selectedRange.Rows.Count; i > 0; i--)
{
  firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[i, 1]);

  if (firstSelectedItem.Value2 == null)
  {
      firstSelectedItem.EntireRow.Delete(System.Type.Missing);
      firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[i, 1]);
  }
}

firstSelectedItem.Select();

Por cierto, supongo que te equivocaste firstSelectedItem declaración de asignación y debe ser [i,1] no [1,1].

Respondido 09 Feb 12, 05:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.