Visual Basic - Metodo Worksheet.Function

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Metodo Worksheet.Function

Publicado por Ismael (7 intervenciones) el 03/04/2017 23:40:49
Hola Foristas, les comento,

Me salta un error en tiempo de ejecución al usar el método Application.Worksheets.Function con condicional,

Ejemplo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit On
Option Strict On
 
Imports System
Imports System.Globalization
Imports System.Threading
Imports Excel = Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop.Excel
 
 
    Dim xlApp As New Microsoft.Office.Interop.Excel.Application
    Dim xlLibro As Microsoft.Office.Interop.Excel.Workbook = CType(GetObject("C:\RUTA\Libro1.xlsm"), Workbook)
    Dim xlHoja As Microsoft.Office.Interop.Excel.Worksheet = CType(xLibro.Worksheets("Hoja1"), Worksheet)
 
 
Private Sub BtnReporte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnReporte.Click
 
        Dim resultado As Double
 
        resultado = CInt(xlApp.WorksheetFunction.CountIf(CType(xlHoja.Range("A1:A10"), Range), 5))
 
        MessageBox.Show(CStr(resultado))
 
End Sub




Si el método lo uso sin condicional me funciona perfecto !, por ejemplo Count solamente, sin "If" :

1
resultado = CInt(xlApp.WorksheetFunction.Count(CType(xlHoja.Range("A1:A10")))



Me pasa lo mismo con todas las funciones (Sum, Count, Average, etc.). Al agregar el condicional, ya sea " If " o " Ifs " me aparece el error de la imagen.


Error

"InvalidCastException"


Probé con decenas de variantes, como ser algunas:

1
2
3
4
5
6
7
8
9
10
11
12
13
resultado = CInt(xlApp.WorksheetFunction.CountIf(CType(xlHoja.Range("A1:A10"), Range), "5"))
 
resultado = CInt(xlApp.WorksheetFunction.CountIf(CType(xlHoja.Range("A1:A10"), Range), CStr(5)))
 
resultado = CInt(xlApp.WorksheetFunction.CountIf(CType(xlHoja.Range("A1:A10"), Range), REFERENCIA A UNA CELDA))
 
resultado = CInt(xlApp.WorksheetFunction.CountIf(CType(xlHoja.Range("A1:A10"), Range), "=5"))
 
resultado = xlApp.WorksheetFunction.CountIf(xlHoja.Range("A1:A10"), 5)
 
resultado = xlApp.WorksheetFunction.CountIf(xlHoja.Range("A1:A10"), "5")
 
resultado = xlApp.WorksheetFunction.CountIf(xlHoja.Range("A1:A10"), "=5")


Entre muchísimas otras, pero el problema persiste... :/


Alguien sabe qué podría ser?


Desde ya muy agradecido !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 12
Ha aumentado su posición en 4 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Metodo Worksheet.Function

Publicado por Ismael (7 intervenciones) el 05/04/2017 11:30:35
Solucion:

1
resultado = xlHoja.Application.WorksheetFunction.CountIf(xlHoja.Range("A1:A10"), 5)

y problema resuelto !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve
Val: 107
Ha disminuido su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Metodo Worksheet.Function

Publicado por xve (208 intervenciones) el 05/04/2017 14:53:08
Gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar