***** Muchas gracias por comentar mis vídeos estimado Otto, me place mucho que un personaje como vos lo haga. Gracias por la buena apreciación, un fuerte abrazo desde Colombia mi buen amigo.
Andrés gracias. Veja a importância deste conteúdo estar disponível em teu canal, pois eu nem o conhecia há 5 anos e agora posso desfrutar do potencial deste. Muito Obrigado.
Tengo un inmenso deseo de poder aprender este tipo de programación. Buscando y buscando me he encontrado con sus vídeos, he hecho un recorrido bastante rápido por alguno de ellos y no queda más que primero felicitarlo por sus conocimientos y y su compromiso con su misión; realmente son muy claros y didácticos. Me queda una gran inquietud : Cuándo se subirán los vídeos siguientes, entiendo que se necesitan muchos más para poder hacer un trabajo útil, lo pregunto porque veo que estos primeros 34 duraron cerca de 2 años. No es una crítica, es una inquietud. Realmente se queda uno corto en su expresión para agradecer todo su esfuerzo y dedicación. ! Bien, muy Bien ¡ Desde el Socorro (Santander) Su amigo Humberto
Hola Humberto Chinchilla Mora primero que todo muchas gracias por comentar y realizar este tipo de criticas constructivas. Te respondo: Si, tienes toda la razón, en estas primeras 20 clases del curso he tardado casi 2 años en montarlas. Esto es debido a que alterno mi trabajo profesional con este proyecto que les ofrezco de manera gratuita por Internet, sin embargo, te digo que no tengo más clases pregrabadas, es decir, las voy montando al canal así como las voy construyendo, y aunque tenga en mi mente la estructura de un curso que puede llegar a contener cerca de 200 clases, solo tengo el temario, el cual he ido levantando de a poco. Por eso te ruego a ti y al resto de los suscriptores que me tengan mucha paciencia, ya que cada clase que monto la preparo con mucho cariño, la estructuro de la manera mas adecuada y la concluyo con ejercicios bien planteados, para que así una vez montada al canal de RUclips se convierta en algo realmente Fácil de comprender y que permita realizar una abstracción total del concepto. No se si deba decir esto, pero siento que ahora es necesario. Por lo general, yo dedico unas dos o tres horas casi todos los días en preparar algo de cada clase, muchas veces después de llegar del trabajo, en horarios nocturnos, de 10 pm a 1 am es el tiempo que tengo para dedicar a este proyecto. Sin embargo, le soy sincero y de todo corazón le digo que si tuviese más tiempo, este proyecto fluiría más rápido, pero no puedo dar mas esfuerzo, si pudiese lo daría, para que ustedes tengan material casi todas las semanas, pero muchas veces el cansancio me gana. Por ultimo te digo que voy a tratar de dar una clase todas las semanas, pero no le aseguro nada, voy a organizar mejor mi tiempo y así dedicar más energías a este proyecto. Un amigo más de Colombia, Andrés Rojas Moncada. hasta pronto.
Excel Hecho Fácil Gracias por su respuesta, eso muestra una vez más su compromiso con lo que hace, le reitero mi agradecimiento por toda la información que usted nos entrega. Si usted me autoriza enviaré algunos comentarios adicionales a su correo. De todas maneras existe un material bastante extenso para estudiar, ya que solo hasta esta semana pude ver algunos de sus vídeos, que los encontré producto de buscar y buscar información sobre macros en excel. Hay bastante información, pero ... Su amigo Humberto
Estimado Humberto Chinchilla Mora con gusto, mi correo esta en cada uno de los vídeos del curso, puedes enviarlos allí. Estaré presto a revisarlos uno por uno. Saludos.
otra versión del procedimiento: Sub SepararNumerosDeLetras2() Dim Fila As Long, Columna As Long, y As Long Dim NumCaracter As Long, LargoCadena As Long Dim Caracter As String, Caracteres As String Dim i As Integer Dim Celda As Range Dim EsNumero As Boolean 'Permite controlar el cambio de numero a letra y a la inversa
Set Celda = Application.InputBox(prompt:="Aquí, la celda donde inicia el recorrido", _ Title:="Seleccione una celda", Type:=8) Fila = Celda.Row ' Se guarda el número de fila Columna = Celda.Column ' Se guarda el número de columna
'Hasta que la celda se encuentre vacía Do Until Cells(Fila, Columna).Value = Empty Set Celda = Nothing 'Vaciamos el contenido de la variable Celda Set Celda = Cells(Fila, Columna) 'Le asignamos el valor de la celda LargoCadena = Len(Celda.Value) 'Almacenamos el número de caracteres y = 1 Caracteres = ""
For i = 1 To Len(Cells(Fila, Columna).Value) If IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then Caracter = Mid(Cells(Fila, Columna), i, 1) If Caracteres = "" Then Caracteres = "'" Caracteres = Caracteres + Caracter If Not IsNumeric(Mid(Cells(Fila, Columna), i + 1, 1)) And IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then Celda.Offset(0, y).Value = Caracteres Caracteres = "" y = y + 1 End If End If
If Not IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then Caracter = Mid(Cells(Fila, Columna), i, 1) Caracteres = Caracteres + Caracter If IsNumeric(Mid(Cells(Fila, Columna), i + 1, 1)) And Not IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then Celda.Offset(0, y).Value = Caracteres Caracteres = "" y = y + 1 End If End If Next i Fila = Fila + 1 Loop End Sub
Muchas gracias Andrés y Diana por compartir sus conocimientos y felicitaciones por la metodología para transmitirlos. Paso a paso es como se aprende. Saludos desde México.Sub Separarletranumero2()Dim Respuesta As Integer Dim CeldasConCodigo As Range Dim Celda As Range Dim VectorCodigo() As Variant Dim CantidadCaracter As Long Dim i As Integer Dim x As Integer Dim y As VariantRespuesta = MsgBox("La lista de códigos debe empezar en la celda B3 de la Hoja activa." _ & vbCrLf & " ¿así está colocada?", vbYesNo + vbCritical, _ "Separación de código en letras y números")If Respuesta = vbNo Then Exit SubSet CeldasConCodigo = Range("B3", Range("B3").End(xlDown))For Each Celda In CeldasConCodigo CantidadCaracter = VBA.Len(Celda.Value) ReDim VectorCodigo(1 To CantidadCaracter) For i = 1 To CantidadCaracter VectorCodigo(i) = VBA.Mid(Celda.Value, i, 1) Next i i = 1 y = Empty x = 1 Do While i CantidadCaracter Then Exit Do Letra: Do While Not IsNumeric(VectorCodigo(i)) y = y & VectorCodigo(i) i = i + 1 If i = CantidadCaracter + 1 Then Exit Do Loop Celda.Offset(0, x).Value = y x = x + 1 y = Empty Loop Erase VectorCodigoNext CeldaEnd Sub
Excelente curso Maestro!, tengo una pregunta, el ejercicio propuesto para esta clase, fue un poco difícil de entender, pero estudiándolo varias veces, pude ver que su ejecución fue sencilla y elaborada a la vez, cumpliendo con todos los requisitos para su solución. ¿Como haces eso?. ¿Me podrías dar algunos tips para solucionar problemas complejos como este con soluciones simples y sencillas como lo acabas de hacer en este vídeo?. Muchísimas gracias por tu respuesta. Cordial Saludo
Hola Atra Mors , primero que todo te agradezco por comentar. Un saludo, desde Colombia. Te respondo diciendo que la manera en como hago para estructurar este tipo de código es realizando previamente un buen análisis del problema, ese es mi truco, esa es mi clave. Sin embargo, otros tips que he aprendido con el tiempo son: 1. Resuelve problemas con soluciones sencillas, no trates de inventar la rueda, solo úsala. 2. Haz algoritmos en papel, de que rutas debe seguir tu proceso. Haz de esto algo sencillo, sin código, con palabras tradicionales, que entiendas, y te dejen ver varias alternativas. Al principio escribelo y verás que luego ya no tendrás que hacerlo, lo haces todo mentalmente. 3. Escribe y prueba, si te sale a la primera no te quedes con esa única solución, plantea mejores, más eficientes, mas cortas, de manera que puedas ver la diferencia y sepas proceder en el futuro. 4. Comenta tu código todo lo que necesites, y una vez documentado analiza lo que hiciste, estudia todo el panorama, y no un bloque corto de la solución. Debes enfocarte en lo global y no en lo individual. 5.Se ordenado, esto te permitirá reusar código, o mejor aun, utilizar el método para llegar a una solución. Todo esto se logra con el tiempo, no te afanes en adquirirlo de una día para otro, será mas difícil y lo más probable que pase es que renuncies en poco tiempo. Se paciente. Equivoquese todo lo que quiera en la practica, mientras ensaya, nunca lo haga con trabajos de terceros, por eso depura tu código, nada es perfecto, pero debes tratar de que lo sea. Programa, programa y programa, entre mas escribas mejor para ti, más aprenderás, más comprenderás, sin embargo no escriba código por escribir "A lo loco", analice primero, plantee un método, pruebe si el método funciona, sino, mejorelo y úselo tanto como pueda y hágale mejoras después. Recuerda, todo es susceptible de ser mejorado, entre más comprendas y analices, mejor será tu mejora, por eso entre más experiencia tengas mejor será tu método. Sin afanes, sin complejos, sin limitantes, si no puedes hoy, descansa, mañana lo lograrás. Haz de esto un modo de ver las cosas y no una teoría más que comprender. Saludos estimado, y te anhelo lo mejor.
Cordial saludo, muy interesante, y también quiero que me ayudes en un tema, y es que tengo dos listbox, uno carga la lista de una base de datos que ya existe, pero esa lista de persona quiero programarle que según el perfil una capacitación, y ya está algo avanzado, lo que no he logrado conseguir es que al ingresar un nombre de un listbox al otro este se organice de forma alfabética, y el otro detalle es que me reconozca el listbox al que le estoy agregando el nombre que se programara para una capacitación si ya está en la lista que estoy cargando me reconozca en caso de que ya este para que no se me repita la misma persona en el mismo listado con la misma capacitación, esto con el fin de quien lo utilice no tenga escusa de que no se dio cuenta ya que si es automático este lo detecte y no permita ingresar la misma persona más de una vez, Gracias, me dices si requiere el archivo y me das el correo para enviarlo feliz día.
Excel Hecho Fácil Gracias, me da alegría que hallas respondido, en caso de necesitarel archivo me das el correo y con gusto lo envío para que se más fácil hacer, ya que esta algo adelantado. Feliz día.
Hola Andrés... Este bucle está bien interesante.
Saludos y un fuerte abrazo mi amigo!!!
***** Muchas gracias por comentar mis vídeos estimado Otto, me place mucho que un personaje como vos lo haga.
Gracias por la buena apreciación, un fuerte abrazo desde Colombia mi buen amigo.
excelente solucion.
Herberth Leonel Claros Muchas gracias a ti por comentar, es grato contar con tu apoyo.
Saludos desde Colombia.
Excelente Andres, muchas gracias por compartir tus conocimientos.
elosc mao Muchas gracias a usted por la felicitación.
Saludos desde Colombia.
Gracias, por estos excelentes tutoriales. Un saludo
Buenisimo Ejercicio!!. ojala subas mas asi que ayuden a rasonar el lenjuage VBA para excel
Andrés gracias. Veja a importância deste conteúdo estar disponível em teu canal, pois eu nem o conhecia há 5 anos e agora posso desfrutar do potencial deste. Muito Obrigado.
Gracias.
SENSEI, MEJOR EXPLICADO NO SE PUEDE, MIL GRACIAS.
PABLO SUAREZ Gracias mi estimado por estas palabras de apoyo.
Saludos desde Colombia.
Excelente, que envidia, de la buena.gracias
No hay de que mi estimado, muchas gracias por comentar, la verdad me place mucho contar con tu apoyo. Saludos desde Colombia.
Tengo un inmenso deseo de poder aprender este tipo de programación.
Buscando y buscando me he encontrado con sus vídeos, he hecho un recorrido bastante rápido por alguno de ellos y no queda más que primero felicitarlo por sus conocimientos y y su compromiso con su misión; realmente son muy claros y didácticos.
Me queda una gran inquietud : Cuándo se subirán los vídeos siguientes, entiendo que se necesitan muchos más para poder hacer un trabajo útil, lo pregunto porque veo que estos primeros 34 duraron cerca de 2 años. No es una crítica, es una inquietud.
Realmente se queda uno corto en su expresión para agradecer todo su esfuerzo y dedicación. ! Bien, muy Bien ¡
Desde el Socorro (Santander)
Su amigo
Humberto
Hola Humberto Chinchilla Mora primero que todo muchas gracias por comentar y realizar este tipo de criticas constructivas.
Te respondo: Si, tienes toda la razón, en estas primeras 20 clases del curso he tardado casi 2 años en montarlas.
Esto es debido a que alterno mi trabajo profesional con este proyecto que les ofrezco de manera gratuita por Internet, sin embargo, te digo que no tengo más clases pregrabadas, es decir, las voy montando al canal así como las voy construyendo, y aunque tenga en mi mente la estructura de un curso que puede llegar a contener cerca de 200 clases, solo tengo el temario, el cual he ido levantando de a poco.
Por eso te ruego a ti y al resto de los suscriptores que me tengan mucha paciencia, ya que cada clase que monto la preparo con mucho cariño, la estructuro de la manera mas adecuada y la concluyo con ejercicios bien planteados, para que así una vez montada al canal de RUclips se convierta en algo realmente Fácil de comprender y que permita realizar una abstracción total del concepto.
No se si deba decir esto, pero siento que ahora es necesario.
Por lo general, yo dedico unas dos o tres horas casi todos los días en preparar algo de cada clase, muchas veces después de llegar del trabajo, en horarios nocturnos, de 10 pm a 1 am es el tiempo que tengo para dedicar a este proyecto. Sin embargo, le soy sincero y de todo corazón le digo que si tuviese más tiempo, este proyecto fluiría más rápido, pero no puedo dar mas esfuerzo, si pudiese lo daría, para que ustedes tengan material casi todas las semanas, pero muchas veces el cansancio me gana.
Por ultimo te digo que voy a tratar de dar una clase todas las semanas, pero no le aseguro nada, voy a organizar mejor mi tiempo y así dedicar más energías a este proyecto.
Un amigo más de Colombia, Andrés Rojas Moncada. hasta pronto.
Excel Hecho Fácil Gracias por su respuesta, eso muestra una vez más su compromiso con lo que hace, le reitero mi agradecimiento por toda la información que usted nos entrega. Si usted me autoriza enviaré algunos comentarios adicionales a su correo. De todas maneras existe un material bastante extenso para estudiar, ya que solo hasta esta semana pude ver algunos de sus vídeos, que los encontré producto de buscar y buscar información sobre macros en excel. Hay bastante información, pero ...
Su amigo
Humberto
Estimado Humberto Chinchilla Mora con gusto, mi correo esta en cada uno de los vídeos del curso, puedes enviarlos allí.
Estaré presto a revisarlos uno por uno.
Saludos.
otra versión del procedimiento:
Sub SepararNumerosDeLetras2()
Dim Fila As Long, Columna As Long, y As Long
Dim NumCaracter As Long, LargoCadena As Long
Dim Caracter As String, Caracteres As String
Dim i As Integer
Dim Celda As Range
Dim EsNumero As Boolean 'Permite controlar el cambio de numero a letra y a la inversa
Set Celda = Application.InputBox(prompt:="Aquí, la celda donde inicia el recorrido", _
Title:="Seleccione una celda", Type:=8)
Fila = Celda.Row ' Se guarda el número de fila
Columna = Celda.Column ' Se guarda el número de columna
'Hasta que la celda se encuentre vacía
Do Until Cells(Fila, Columna).Value = Empty
Set Celda = Nothing 'Vaciamos el contenido de la variable Celda
Set Celda = Cells(Fila, Columna) 'Le asignamos el valor de la celda
LargoCadena = Len(Celda.Value) 'Almacenamos el número de caracteres
y = 1
Caracteres = ""
For i = 1 To Len(Cells(Fila, Columna).Value)
If IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then
Caracter = Mid(Cells(Fila, Columna), i, 1)
If Caracteres = "" Then Caracteres = "'"
Caracteres = Caracteres + Caracter
If Not IsNumeric(Mid(Cells(Fila, Columna), i + 1, 1)) And IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then
Celda.Offset(0, y).Value = Caracteres
Caracteres = ""
y = y + 1
End If
End If
If Not IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then
Caracter = Mid(Cells(Fila, Columna), i, 1)
Caracteres = Caracteres + Caracter
If IsNumeric(Mid(Cells(Fila, Columna), i + 1, 1)) And Not IsNumeric(Mid(Cells(Fila, Columna), i, 1)) Then
Celda.Offset(0, y).Value = Caracteres
Caracteres = ""
y = y + 1
End If
End If
Next i
Fila = Fila + 1
Loop
End Sub
Nuevamente gracias y excelente esta enseñanza, es posible tener un curso aplicado a la Ingeniería Civil, éxitos...
Muchas gracias Andrés y Diana por compartir sus conocimientos y felicitaciones por la metodología para transmitirlos. Paso a paso es como se aprende. Saludos desde México.Sub Separarletranumero2()Dim Respuesta As Integer
Dim CeldasConCodigo As Range
Dim Celda As Range
Dim VectorCodigo() As Variant
Dim CantidadCaracter As Long
Dim i As Integer
Dim x As Integer
Dim y As VariantRespuesta = MsgBox("La lista de códigos debe empezar en la celda B3 de la Hoja activa." _
& vbCrLf & " ¿así está colocada?", vbYesNo + vbCritical, _
"Separación de código en letras y números")If Respuesta = vbNo Then Exit SubSet CeldasConCodigo = Range("B3", Range("B3").End(xlDown))For Each Celda In CeldasConCodigo CantidadCaracter = VBA.Len(Celda.Value)
ReDim VectorCodigo(1 To CantidadCaracter)
For i = 1 To CantidadCaracter
VectorCodigo(i) = VBA.Mid(Celda.Value, i, 1)
Next i
i = 1
y = Empty
x = 1
Do While i CantidadCaracter Then Exit Do
Letra:
Do While Not IsNumeric(VectorCodigo(i))
y = y & VectorCodigo(i)
i = i + 1
If i = CantidadCaracter + 1 Then Exit Do
Loop
Celda.Offset(0, x).Value = y
x = x + 1
y = Empty
Loop
Erase VectorCodigoNext CeldaEnd Sub
Excelente curso Maestro!, tengo una pregunta, el ejercicio propuesto para esta clase, fue un poco difícil de entender, pero estudiándolo varias veces, pude ver que su ejecución fue sencilla y elaborada a la vez, cumpliendo con todos los requisitos para su solución. ¿Como haces eso?. ¿Me podrías dar algunos tips para solucionar problemas complejos como este con soluciones simples y sencillas como lo acabas de hacer en este vídeo?. Muchísimas gracias por tu respuesta.
Cordial Saludo
Hola Atra Mors , primero que todo te agradezco por comentar.
Un saludo, desde Colombia.
Te respondo diciendo que la manera en como hago para estructurar este tipo de código es realizando previamente un buen análisis del problema, ese es mi truco, esa es mi clave.
Sin embargo, otros tips que he aprendido con el tiempo son:
1. Resuelve problemas con soluciones sencillas, no trates de inventar la rueda, solo úsala.
2. Haz algoritmos en papel, de que rutas debe seguir tu proceso. Haz de esto algo sencillo, sin código, con palabras tradicionales, que entiendas, y te dejen ver varias alternativas. Al principio escribelo y verás que luego ya no tendrás que hacerlo, lo haces todo mentalmente.
3. Escribe y prueba, si te sale a la primera no te quedes con esa única solución, plantea mejores, más eficientes, mas cortas, de manera que puedas ver la diferencia y sepas proceder en el futuro.
4. Comenta tu código todo lo que necesites, y una vez documentado analiza lo que hiciste, estudia todo el panorama, y no un bloque corto de la solución. Debes enfocarte en lo global y no en lo individual.
5.Se ordenado, esto te permitirá reusar código, o mejor aun, utilizar el método para llegar a una solución.
Todo esto se logra con el tiempo, no te afanes en adquirirlo de una día para otro, será mas difícil y lo más probable que pase es que renuncies en poco tiempo. Se paciente.
Equivoquese todo lo que quiera en la practica, mientras ensaya, nunca lo haga con trabajos de terceros, por eso depura tu código, nada es perfecto, pero debes tratar de que lo sea.
Programa, programa y programa, entre mas escribas mejor para ti, más aprenderás, más comprenderás, sin embargo no escriba código por escribir "A lo loco", analice primero, plantee un método, pruebe si el método funciona, sino, mejorelo y úselo tanto como pueda y hágale mejoras después. Recuerda, todo es susceptible de ser mejorado, entre más comprendas y analices, mejor será tu mejora, por eso entre más experiencia tengas mejor será tu método.
Sin afanes, sin complejos, sin limitantes, si no puedes hoy, descansa, mañana lo lograrás.
Haz de esto un modo de ver las cosas y no una teoría más que comprender.
Saludos estimado, y te anhelo lo mejor.
Excel Hecho Fácil Muchas gracias Sensei, pondré en practica cada línea que escribiste. Esperaré con ansias tu próximo vídeo. Saludos!
Cordial saludo, muy interesante, y también quiero que me ayudes en un tema, y es que tengo dos listbox, uno carga la lista de una base de datos que ya existe, pero esa lista de persona quiero programarle que según el perfil una capacitación, y ya está algo avanzado, lo que no he logrado conseguir es que al ingresar un nombre de un listbox al otro este se organice de forma alfabética, y el otro detalle es que me reconozca el listbox al que le estoy agregando el nombre que se programara para una capacitación si ya está en la lista que estoy cargando me reconozca en caso de que ya este para que no se me repita la misma persona en el mismo listado con la misma capacitación, esto con el fin de quien lo utilice no tenga escusa de que no se dio cuenta ya que si es automático este lo detecte y no permita ingresar la misma persona más de una vez, Gracias, me dices si requiere el archivo y me das el correo para enviarlo feliz día.
Mauricio Gutierrez Déjame revisar y te comento.
Saludos.
Excel Hecho Fácil Gracias, me da alegría que hallas respondido, en caso de necesitarel archivo me das el correo y con gusto lo envío para que se más fácil hacer,
ya que esta algo adelantado. Feliz día.
Muy interesante.
Mauricio Gutierrez Gracias, muy amable por su valioso comentario.
Saludos desde Colombia.