Respuesta "Iniciales" a andariego06
Esto es lo que me pregunto hace varios días:
hola que tal.... Disculpen espero que alguien me pueda ayudar.... Tengo la siguiente macro:
Sub iniciales()
Dim nombre As String
Dim largo As Integer
Dim x As Integer
Dim y As String
Dim letra_sig As String
Dim iniciales As String
nombre = ActiveCell.Value
largo = Len(nombre)
iniciales = Left(nombre, 1)
For x = 1 To largo
y = Mid(nombre, x, 1)
If y = " " Then
inicial_sig = Mid(nombre, x + 1, 1)
iniciales = iniciales & inicial_sig
End If
Next
ActiveCell.Offset(0, 1).Value = iniciales
End Sub
Esta es para iniciales pero tengo que seleccionar la celda y el resultado me lo arroja en la siguiente una por una...... Tengo mas de 4000 entradas y seguirá creciendo mi base de datos.... Alguien me puede ayudar para que esto se haga de forma automática.
Gracias de antemano.
Y esto es lo que le respondí
Experto
Pues una de dos, o la conviertes en Función o haces un Bucle Repetitivo:
Pero cambie tu código por uno mas corto :P
como Función
Public Function Iniciales(ByVal Nombre As String) As String
Dim Nombres() As String, Res(6) As String
Nombres = Split(Nombre, " ")
For i = 0 To UBound(Nombres)
Res(i) = Left(Nombres(i), 1)
Next
For i = 0 To UBound(Nombres)
Iniciales = UCase(Iniciales & Res(i))
Next
End Function
Con un Bucle For Next
Sub Iniciales2(ByVal Rango As Range)
Dim C As Range
For Each C In Rango
Dim Nombres() As String, Res(6) As String
Nombres = Split(C.Value, " ")
For i = 0 To UBound(Nombres)
Res(i) = Left(Nombres(i), 1)
Next
For i = 0 To UBound(Nombres)
C.Offset(0, 2).Value = UCase(C.Offset(0, 2).Value & Res(i))
Next
Next
End Sub
Y lo "llamas" así:
Sub ObtieneIniciales()
Iniciales2 Range("A3:A5") 'Tienes que seleccionar las Celdas d donde quieres extraer las iniciales
End Sub
Y me respondió:
Usuario
en realidad no me funciono ninguna de las dos opciones que me diste pero te calificare con 4 puesto que no se usar al cienn esa cosa de visual basic en realidad soy nuevo y toda mi programación la bajo de la que ya existe en especial de esta web...... Quizá fui yo quien no entendió el razonamiento de tu formula.
Y volvió a Preguntar:
Ayuda con esta macro urgente.
Usuario: andariego06
Hola que tal...... A continuación les muestro una programación que tengo....
Dim nombre As String
Dim largo As Integer
Dim x As Integer
Dim y As String
Dim letra_sig As String
Dim INICIALES As String
nombre = ActiveCell.Value
largo = Len(nombre)
INICIALES = Left(nombre, 1)
For x = 1 To largo
y = Mid(nombre, x, 1)
If y = " " Then
inicial_sig = Mid(nombre, x + 1, 1)
INICIALES = INICIALES & inicial_sig
End If
Next
ActiveCell.Offset(0, 1).Value = INICIALES
End Sub
Es tal cual la tengo, la ocupo primero en la columna "e" y después en la columna "g" lo que hace es que en la siguiente columna me da las iniciales de la palabra que exista en alguna de estas dos celdas mencionadas y ahora lo que no hace es hacerlo en toda la comuna sino mas bien en la celda en la que seleccione, pero como les comentaba quiero que lo haga automáticamente celda por celda en todas la columnas mencionadas....ahora tengo el siguiente bucle pero no se como ocuparlo o en que parte de mi macro lo tengo que colocar:
Do While Cells (x , 1). Value <> ""
Loop
Bu3no en realidad ni siquiera se si así debe de ir el bucle solo vi como se ocupaba en excel, soy principiante en esto de las macrosss.....ayuda please urgeeeeeeeeee
Entonces que quiere este usuario????????????
hola que tal.... Disculpen espero que alguien me pueda ayudar.... Tengo la siguiente macro:
Sub iniciales()
Dim nombre As String
Dim largo As Integer
Dim x As Integer
Dim y As String
Dim letra_sig As String
Dim iniciales As String
nombre = ActiveCell.Value
largo = Len(nombre)
iniciales = Left(nombre, 1)
For x = 1 To largo
y = Mid(nombre, x, 1)
If y = " " Then
inicial_sig = Mid(nombre, x + 1, 1)
iniciales = iniciales & inicial_sig
End If
Next
ActiveCell.Offset(0, 1).Value = iniciales
End Sub
Esta es para iniciales pero tengo que seleccionar la celda y el resultado me lo arroja en la siguiente una por una...... Tengo mas de 4000 entradas y seguirá creciendo mi base de datos.... Alguien me puede ayudar para que esto se haga de forma automática.
Gracias de antemano.
Y esto es lo que le respondí
Experto
Pues una de dos, o la conviertes en Función o haces un Bucle Repetitivo:
Pero cambie tu código por uno mas corto :P
como Función
Public Function Iniciales(ByVal Nombre As String) As String
Dim Nombres() As String, Res(6) As String
Nombres = Split(Nombre, " ")
For i = 0 To UBound(Nombres)
Res(i) = Left(Nombres(i), 1)
Next
For i = 0 To UBound(Nombres)
Iniciales = UCase(Iniciales & Res(i))
Next
End Function
Con un Bucle For Next
Sub Iniciales2(ByVal Rango As Range)
Dim C As Range
For Each C In Rango
Dim Nombres() As String, Res(6) As String
Nombres = Split(C.Value, " ")
For i = 0 To UBound(Nombres)
Res(i) = Left(Nombres(i), 1)
Next
For i = 0 To UBound(Nombres)
C.Offset(0, 2).Value = UCase(C.Offset(0, 2).Value & Res(i))
Next
Next
End Sub
Y lo "llamas" así:
Sub ObtieneIniciales()
Iniciales2 Range("A3:A5") 'Tienes que seleccionar las Celdas d donde quieres extraer las iniciales
End Sub
Y me respondió:
Usuario
en realidad no me funciono ninguna de las dos opciones que me diste pero te calificare con 4 puesto que no se usar al cienn esa cosa de visual basic en realidad soy nuevo y toda mi programación la bajo de la que ya existe en especial de esta web...... Quizá fui yo quien no entendió el razonamiento de tu formula.
Y volvió a Preguntar:
Ayuda con esta macro urgente.
Usuario: andariego06
Hola que tal...... A continuación les muestro una programación que tengo....
Dim nombre As String
Dim largo As Integer
Dim x As Integer
Dim y As String
Dim letra_sig As String
Dim INICIALES As String
nombre = ActiveCell.Value
largo = Len(nombre)
INICIALES = Left(nombre, 1)
For x = 1 To largo
y = Mid(nombre, x, 1)
If y = " " Then
inicial_sig = Mid(nombre, x + 1, 1)
INICIALES = INICIALES & inicial_sig
End If
Next
ActiveCell.Offset(0, 1).Value = INICIALES
End Sub
Es tal cual la tengo, la ocupo primero en la columna "e" y después en la columna "g" lo que hace es que en la siguiente columna me da las iniciales de la palabra que exista en alguna de estas dos celdas mencionadas y ahora lo que no hace es hacerlo en toda la comuna sino mas bien en la celda en la que seleccione, pero como les comentaba quiero que lo haga automáticamente celda por celda en todas la columnas mencionadas....ahora tengo el siguiente bucle pero no se como ocuparlo o en que parte de mi macro lo tengo que colocar:
Do While Cells (x , 1). Value <> ""
Loop
Bu3no en realidad ni siquiera se si así debe de ir el bucle solo vi como se ocupaba en excel, soy principiante en esto de las macrosss.....ayuda please urgeeeeeeeeee
Entonces que quiere este usuario????????????