Como utilizar funcion Split VB

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.

1 respuesta

Respuesta
1
Para ayudarte habría que ver la macro
Abraham
Hola Abraham gracias por atender la inquietud, fíjate 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 inicialmente lo coloco al abrir el libro la idea es que con un botón 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
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
Hola Abraham, 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.
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 tendrían necesariamente que coincidir con los usuarios de cada office 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
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 manteniendo 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
¿Estas usando Excel 97? En esa version no estaba implementada dicha instrucción (Split)
Si no es la version 97, algunas cosas que tendría que saber:
- Version de Excel
- Linea en donde marca el error
- En donde colocaste el código, ¿en un modulo "normal"?
Abraham
PD: Para nada me ofendió tu aclaratoria por si acaso :)
Abraham, correcto efectivamente estoy utilizando excel 97... aunque no lo creas, je je. 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 fue una excelente elección.
Saludos,
K.D.
He ahí el dilema, es por usar Excel 97 :(
Si, lo mejor es optar por otras opciones, quizás tener los nombres de los usuarios en una hoja "muy oculta" (Propiedad visible en XlSheetVeryHidden), y a través 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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas