Inicio > Microsoft Excel > avalenciape > Como utilizar funcion Split VB

Como utilizar funcion Split VB

Experto:
Usuario: Anónimo Fecha: 17/09/2009
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
16/09/2009
Usuario
Hola expertos la verdad soy nuevo en la creación de macros, he estado revisando algunos ejemplos de la función split pero cada vez que intento crear una macro al compilar me arroja el mensaje  "No se ha definido SUB o Function", la pequeña rutina de ejemplo la estoy colocando en la Hoja1, debo colocarla en un modulo, si pueden ayudarme se los agradezco,
Saludos
16/09/2009
kaiserdenz, experto respondiendo en Microsoft Excel
Experto
Para ayudarte habria que ver la macro
Abraham
16/09/2009
Usuario
Hola Abraham gracias por atender la inquietud, fijate lo que intento hacer con la macro anexa es aplicar la función split de los tres usuario que he definido como usuarios de avanzada en la hoja para modificar algunos datos, de lo contrario se oculta el reporte, sin embargo, como te comente es primera vez que utilizo la función y no he podido ver como se comporta, aunque incialmente lo coloco al abrir el libro la idea es que con un boton llamar a este procedimiento.
Agradezco de anetmano en lo que me puedas ayudar,
Private Sub Workbook_Open()
Usuario_Administrador = "user01,user02,user03"
Usuario_Administrador = SPLIT(LCase(Usuario_Administrador), ",")
usuario = LCase(Application.UserName)
For i = 0 To UBound(Usuario_Administrador)
posicion = posicion + InStr(usuario, Usuario_Administrador(i))
Next
If posicion = 0 Then
Hoja3.Visible = xlSheetVeryHidden
Else
Hoja3.Visible = xlSheetVisible
End If
ActiveWorkbook.Save
End Sub
16/09/2009
kaiserdenz, experto respondiendo en Microsoft Excel
Experto
Amigo, me parece que no tienes claro como funciona Split. Un ejemplo:
Sub EjemploSplit()
Dim strcadena$
Dim x() As String
strcadena$ = "Abraham,Valencia,Jimenez"
x = Split(strcadena$, ",")
MsgBox x(0)
MsgBox x(1)
MsgBox x(2)
End Sub
Abraham
16/09/2009
Usuario
Hola Abrahan, ante todo gracias por el ejemplo, efectivamente no tengo muy claro como funciona y observándolo se ve bastante sencillo, en este caso estoy tratando de insertarlo dentro de una serie de macros en la que estoy trabajando, pero lo que no te he comentado es que estoy trabajando directamente en el editor de Visual que contiene excel, no se si varia la rutina el que lo este ejecutando de esta manera, disculpa mi ignorancia en relación al tema.
En este caso lo que quiero es que una vez que se abra el libro el mismo lea una variable que contiene una cadena de caracateres en la que se encuentra los diferentes usuarios que he incluido,
Private Sub Workbook_Open()
Usuario_Administrador = "user01,user02,user03"
y una vez que los tenga los separe, para que posteriormente los revise contra el usuario que inicio sesión (Application.UserName)
Usuario_Administrador = SPLIT(LCase(Usuario_Administrador), ",")
usuario = LCase(Application.UserName)
En caso de no sonseguirlo oculto la hoja de excell en este caso Hoja3.
For i = 0 To UBound(Usuario_Administrador)
posicion = posicion + InStr(usuario, Usuario_Administrador(i))
Next
If posicion = 0 Then
Hoja3.Visible = xlSheetVeryHidden
Else
Hoja3.Visible = xlSheetVisible
End If
ActiveWorkbook.Save
End Sub
la verdad no se si es la manera o sencillamente  no aplica la función para lo que quiero hacer,
Gracias nuevamente por el apoyo que me puedas brindar al respecto
K.D.
16/09/2009
kaiserdenz, experto respondiendo en Microsoft Excel
Experto
Pues si era obvio por los objetos que estabas trabajando en VBA de Excel
OJO con application.username, pues te da el usuario del Office, y por lo tanto para mostrar/ocultar hojas como lo requieres pues tus usuarios tendrian necesariamente que coincidir con los usuarios de cada ofiice de cada PC en donde piensas usar tu macro
Si lo que buscas es los usuarios de windows, pues debes usar:
Environ("Username")
Una buena recomendaicon es que declares las variables
Prueba con lo de environ y comentas
Abraham
17/09/2009
Usuario
Hola abraham, muchas gracias!!!!no quise ofender con la aclaratoria de VBA de Excel, como te comente no tengo mucho conocimiento en la materia, adicionalmente me apena ser tan persistente en esta pregunta, lo que pasa es que me llama mucho la atención la función.
En relación al nombre de usuario mi interés más que conocer el nombre de usuario es el comportamiento de la cadena de caracteres y split para luego adecuarlos en la diferentes macros en las que estoy trabajando. Ahora bien manteniéndo el ejemplo que me facilitaste. lo coloque tal como se muestra
Sub EjemploSplit()
  Dim strcadena As String
  Dim x() As String
    strcadena = "Abraham,Valencia,Jimenez"
    x = Split(strcadena, ",",3)
  MsgBox x(0)
  MsgBox x(1)
  MsgBox x(2)
 
End Sub
 
y me sigue arrojando el error: "Error de Compilación: No se ha definido SUB o Function", tal vez te este quitando mucho tiempo con preguntas muy básicas, pero te repito me llama mucho la atención. O si conoces algún link, donde pueda ver tutoriales del punto. te lo agradecería infiniiitamente,
Saludos,
K.D
17/09/2009
kaiserdenz, experto respondiendo en Microsoft Excel
Experto
Estas usando Excel 97? En esa version no estaba implementada dicha instruccion (Split)
Si no es la version 97, algunas cosas que tendria que saber:
- Version de Excel
- Linea en donde marca el error
- en donde colocaste el codigo, en un modulo "normal"?
Abraham
PD: Para nada me ofendio tu aclaratoria por si acaso :)
17/09/2009
Usuario
Abraham, correcto efectivamente estoy utilizando excel 97.... aunque no lo creas, jeje. en ese caso si estoy en problemas porque tendré inclinarme por otras opciones, ya que las macros en las que estoy trabajando serán utilizadas en una intranet donde los diferentes usuarios trabajan con office 97....  tenía ideado incluir esa función en varias rutinas con la finalidad de afinar un reporte en el que estoy trabajando, lástima.. Abraham, mil gracias por apoyarme con tus conocimientos y tu excelente paciencia!!!!, tenía bastante tiempo queriendo entrar al foro, y ya veo que fué una excelente elección.
Saludos,
K.D.
17/09/2009
kaiserdenz, experto respondiendo en Microsoft Excel
Experto
He ahi el dilema, es por usar Excel 97 :(
Si, lo mejor es optar por otras opciones, quizas tener los nombres de los usuarios en una hoja "muy oculta" (Propiedad visible en XlSheetVeryHidden), y a traves de un bucle revisar/comprobar dichos usuarios
No te doy alguna alternativa puntual ya que no tengo Excel 97, no lo manejo hace años y lamentablemente no recuerdo muchas de las limitaciones de su version de VBA :(
De todos modos si intentas algo ya sabes donde encontrarnos :)
Abraham
PD: No olvides cerrar el tema amigo
17/09/2009
Usuario
Excelente asesoramiento y disponibilidad para compartir nuevas ideas, Abraham, Gracias por el apoyo.
Enlaces patrocinados