Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: zxs23 en Agosto 20, 2014, 10:28:27 pm

Título: Como pasar varios valores en un solo parametro
Publicado 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
Código: (VB) [Seleccionar]
Public Function Export_Excel(rec As Recordset) As Boolean


Lo que hago ahora es pasar manualmente como parametro la letra de la columna
Código: (VB) [Seleccionar]
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.
Código: (VB) [Seleccionar]
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:
Código: (VB) [Seleccionar]
Call Export_Excel(rs,"HAFQ")
Título: Re:Como pasar varios valores en un solo parametro
Publicado por: Albertomi en Agosto 21, 2014, 12:41:50 am
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:
Código: [Seleccionar]
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:
Código: [Seleccionar]
Call Export_Excel("Hola","A,B,C,D,F,G,H")
Saludos, desde algún lugar de Lima-Perú
Título: Re:Como pasar varios valores en un solo parametro
Publicado por: raul338 en Agosto 21, 2014, 09:17:24 am
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/)

Título: Re:Como pasar varios valores en un solo parametro
Publicado por: Albertomi en Agosto 21, 2014, 02:48:03 pm
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ú
Título: Re:Como pasar varios valores en un solo parametro
Publicado por: zxs23 en Agosto 21, 2014, 09:51:38 pm
Muchas gracias a todos, saludos