Autor Tema: Como pasar varios valores en un solo parametro  (Leído 3882 veces)

0 Usuarios y 1 Visitante están viendo este tema.

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Como pasar varios valores en un solo parametro
« en: Agosto 20, 2014, 10:28:27 pm »
La pregunta parte de este post 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")

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Como pasar varios valores en un solo parametro
« Respuesta #1 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ú
Saludos, desde algún lugar de Lima-Perú

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Como pasar varios valores en un solo parametro
« Respuesta #2 en: Agosto 21, 2014, 09:17:24 am »

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Como pasar varios valores en un solo parametro
« Respuesta #3 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ú
Saludos, desde algún lugar de Lima-Perú

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Re:Como pasar varios valores en un solo parametro
« Respuesta #4 en: Agosto 21, 2014, 09:51:38 pm »
Muchas gracias a todos, saludos