Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: zxs23 en Agosto 20, 2014, 10:28:27 pm
-
La pregunta parte de este post http://leandroascierto.com/foro/index.php?topic=2700.0 (http://leandroascierto.com/foro/index.php?topic=2700.0)
Lo que intento realizar es pasar como parametro las letras correspondientes a cada columna de excel a la cual le quiero aplicar la funcion SUMA o SUM.
Por ejemplo la funcion solo tiene como parametro el recordset
Public Function Export_Excel(rec As Recordset) As Boolean
Lo que hago ahora es pasar manualmente como parametro la letra de la columna
Public Function Export_Excel(rec As Recordset,optional LetraH as string) As Boolean
'Hoja.range("H62").Formula = "=SUM(H4:H60)" 'Aqui solo me interesa el string "H"
Hoja.range(LetraH & 62).Formula = "=SUM(" & LetraH & 4 & ":" & LetraH & 60 & ")"
Despues de exportar estoy haciendo una sumatoria a toda la columna H del excel sin problemas.
Ahora quiero hacer la sumatoria a mas columnas y tendria que estar agregando las columnas de la siguiente manera.
Public Function Export_Excel(rec As Recordset,optional LetraH as string, LetraA as string, LetraF as string, LetraQ as string.....etc) As Boolean
Call Export_Excel(rs,"H","A","F","Q")
Es posible simplificar este proceso para ejecutar la funcion por poner un ejemplo de la siguiente manera:
Call Export_Excel(rs,"HAFQ")
-
Estimado zxs23
He realizado unas variaciones a tú funcion, con la finalidad que puedas pasar como parámetro cualquier número de columnas Código:
Public Function Export_Excel(ByRef rec As Recordset, Optional ByRef Letras As String) As Boolean
Dim strColumna() As String
Dim lngIndex As Long
strColumna() = Split(Letras, ",", , vbTextCompare)
For lngIndex = LBound(strColumna) To UBound(strColumna)
Hoja.range(strColumna(lngIndex) & 62).Formula = "=SUM(" & strColumna(lngIndex) & 4 & ":" & strColumna(lngIndex) & 60 & ")"
Next
End Function
La invocación a la funcion seria de la siguiente forma:
Call Export_Excel("Hola","A,B,C,D,F,G,H")
Saludos, desde algún lugar de Lima-Perú
-
Tambien podes buscar sobre ParamArray
Define VB6 procedure arguments with the ParamArray keyword (http://www.techrepublic.com/article/define-vb6-procedure-arguments-with-the-paramarray-keyword/)
-
Estimado zxs23
Lo que indica raul338 es valido pero debes de tener en cuenta que ya no podrán ser Optional, ya que el argumento opcional debe ser de tipo Variant o de un tipo intrínseco con un valor predeterminado y ParamArrayargs() no lo es.
Saludos, desde algún lugar de Lima-Perú
-
Muchas gracias a todos, saludos