Jump to content

MauriciodeAbreu

Members
  • Posts

    97
  • Joined

  • Last visited

  • Country

    United States

Converted

  • Campos
    ;
  • Mi versión de Excel:
    2

Recent Profile Visitors

560 profile views

MauriciodeAbreu's Achievements

  1. Buenas noches estimados. He estado un poco liado, por lo que no he podido postear. He logrado hacer lo siguiente a partir de un codigo que encontre, pero se me complica al querer agregar los seriales de la otra tabla. Dim Fecha, DateCells As Date Dim X, Y, Z, W, uf, Filas As Integer Dim Skip, Adding As Boolean Dim rng As Range Dim InputRng As Range Dim OutRng As Range Dim xRow As Integer Dim xCol As Integer Dim xArr As Variant Dim iRow, iCol As Integer Sub ImprimirSeriales() ImprimirSerialesTabla Sheets("Operativas")': Cells.Select: Selection.Columns.AutoFit: Adding = True ': ActiveSheet.Move _ After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count) ImprimirSerialesTabla Sheets("Inoperativas"): Cells.Select: Selection.Columns.AutoFit End Sub Private Sub ImprimirSerialesTabla(Tabla As Worksheet) Sheets("Operativas").Activate Fecha = Format(Date, "dd-mm-yyyy") With Tabla uf = .Range("B" & Rows.Count).End(xlUp).Row For X = 2 To uf If .Range("C" & X) = vbNullString Then MsgBox "Usted llego al final de la tabla." & vbNewLine & "Y no hay registrso con la fecha de hoy": Exit Sub DateCells = Format(.Range("C" & X), "dd/mm/yyyy") If Fecha = DateCells Then If Adding = True Then AgregarInoperativos: Exit Sub Set InputRng = ActiveSheet.Range(Cells(X, 2), Cells(uf, 2)) 'Sheets("Operativas") xRow = 44 'Cantidad de filas por columna Worksheets.Add.Name = "Seriales " & Fecha 'Crear hoja nueva con nombre definido y la fecha del dia en curso Set OutRng = Sheets("Seriales " & Fecha).Range("A2") Set InputRng = InputRng.Columns(1) xCol = InputRng.Cells.Count / xRow ReDim xArr(1 To xRow, 1 To xCol + 1) Z = InputRng.Cells.Count - 1 For i = 0 To InputRng.Cells.Count - 1 ' Z = InputRng.Cells.Count - 1 xValue = InputRng.Cells(i + 1) iRow = i Mod xRow W = iRow iCol = VBA.Int(i / xRow) Sheets("Seriales " & Fecha).Range(Cells(1, 1), Cells(1, iCol + 1)) = "Seriales" xArr(iRow + 1, iCol + 1) = xValue Next OutRng.Resize(UBound(xArr, 1), UBound(xArr, 2)).Value = xArr Exit Sub End If Next End With End Sub Por lo que recurro a ustedes, con la esperanza de que me den alguna luz de como completar el proceso. Agradecido como siempre por las ideas, o ayuda que me puedan brindar.
  2. Buenas dias amigos. Vengo con un problemita que de seguro es simple, pero no doy con la solucion. Necesito que se busque en una columna la fecha del dia en curso, y al encontrar la fecha, copie los valores a la izquierda (es decir, los Seriales), en una hoja nueva bajo el nombre de "Seriales y la fecha del dia en curso", pero, al copiar los datos, debe dividirlo cada 44 filas (ya que cebe tener encabezado) y brincar a la fila inicial de la siguiente columna, y asi sucesivamente e imprimir esa hoja nueva. Dejo un archivo de ejemplo. Agradecido de antemano por vuestra ayuda. Busqueda creacion e impresion.rar
  3. Por cierto Antoni. Como seria para cambiar el texto del primer item dependiendo si esta seleccionado todo o no ¿? Agradecido nuevamente por la ayuda
  4. ¡Me quito el sombrero Antoni!, al ver tu código pienso en lo largo del mío para hacer lo mismo jajajajajaja. Como me falta experiencia y conocimiento... 😌 Agradecido infinitamente por tu ayuda y aporte. Un abrazo desde Venezuela. PD. Tema solucionado.
  5. Bueno, subo el archivo de lo que logre hacer. Tal vez le sirva a alguien. Que hace: 1- Se puede seleccionar todos los Ítems del ListBox, al seleccionar el primer Ítem de la lista. 2- Se puede deseleccionar todos los Ítems del ListBox, al deseleccionar el primer Ítem de la lista. 3- Se puede deseleccionar cualquier ítem que haya sido seleccionado mediante el primer Ítem de la lista. 4- Se puede seleccionar cualquier ítem que haya sido Deseleccionado mediante el primer Ítem de la lista. 5- Al seleccionar todos los Ítems de manera individual, el texto del primer Ítem cambia a "Deseleccionar Ítem" y se tilda el primer Ítem. 6- Al estar todos los Ítem seleccionados e ir deseleccionando los Ítems de manera individual, el texto del primer Ítem cambia a "Seleccionar Ítem" y se destilda el primer Ítem. 7- Al estar deselecionados todos los Ítems, e ir seleccionando todos los Ítems uno a uno, el texto del primer Ítem cambia a "Deseleccionar Ítems". Aun así, me gustaría, y espero con ansias ver vuestras propuestas, para así poder aprender mas, que aun estoy crudo en el tema de VBA. Un fuerte abrazo... Prueba de seleccion de Item Version 2.0.xlsm
  6. Creo haber resuelto el problema. Tal vez no de la manera mas elegante o correcta, pero en las pruebas preliminares ha funcionado. Private Sub lstVisibles_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If opt_DobleClick = True Then Exit Sub If Me.lstVisibles.Selected(0) = True And ThisWorkbook.Sheets("Hoja1").Range("A2").Value = vbNullString Then ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Activado" For i = 1 To lstVisibles.ListCount - 1 lstVisibles.Selected(i) = True Next i End If If Me.lstVisibles.Selected(0) = True And ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Activado" Then ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Activado" For i = 1 To lstVisibles.ListCount - 1 If lstVisibles.Selected(i) = False Then lstVisibles.Selected(i) = False Next i End If If Me.lstVisibles.Selected(0) = False And ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Activado" Then ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Desactivado" For i = 1 To lstVisibles.ListCount - 1 lstVisibles.Selected(i) = False Next i End If If Me.lstVisibles.Selected(0) = False And ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Desactivado" Then For i = 1 To lstVisibles.ListCount - 1 If lstVisibles.Selected(i) = True Then lstVisibles.Selected(i) = True Next i End If If Me.lstVisibles.Selected(0) = True And ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Desactivado" Then ThisWorkbook.Sheets("Hoja1").Range("A2").Value = "Activado" For i = 1 To lstVisibles.ListCount - 1 lstVisibles.Selected(i) = True Next i End If End Sub Creo que solo faltaría agregar un código que al des tildar todos los Ítem, des tilde el Ítem cero. Independientemente de este resultado, me gustaría saber si tienen o existe un mejor o mas simple método de hacerlo. U alguna otra idea para lograr el objetivo ¿? Agradecido de antemano por vuestros comentarios y ayuda.
  7. Buenas Antoni. Subo archivo de prueba. Gracias!! Prueba de seleccion de Item Version 1.0.xlsm
  8. Agrego mas informacion al respecto. Estoy usando un formulario con un ListBox MultiSelect = frmMultiSelectMulti para cargar todas las hojas del libro activo. La idea en principio es que el primer Ítem (cuyo nombre es "Hojas del libro") se use como Switch para seleccionar o deseleccionar todos los demás ítem del ListBox. Lo cual lo logro con el evento MouseUp o DblClick, con este ultimo me permite sin problema seleccionar algunos ítem sin que estos se destilden (pero hay que darle doble click, y la idea es no tener que dar doble click). Y con el evento MouseUp no me lo permite. Ejempo: Private Sub lstVisibles_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Me.lstVisibles.Selected(0) = True Then For i = 1 To lstVisibles.ListCount - 1 lstVisibles.Selected(i) = True Next i Else For i = 1 To lstVisibles.ListCount - 1 Me.lstVisibles.Selected(i) = False Next i End If End sub Por eso os pregunto si hay alguna manera de saber cuando se destilda el item, ya que al no estar seleccionado el primer item, no me permite seleccionar los otros item. No se si logro explicarme.
  9. Estimados amigos. Me surge una duda, existe una forma de saber si se ha deseleccionado un Item de un ListBox ¿? Es decir, si tengo el primer item de un ListBox seleccionado, y lo destildo, hay manera de registrar esta acción para poder ejecutar una macro ¿? Agradecido de antemano por vuestra ayuda.
  10. Buenas Héctor, Tienes razón, no había tomado en cuenta la traducción automática... 🙄 Y en efecto es mejor apoyarse en el documento en ingles 👍, o digamos no traducido. Nuevamente gracias.
  11. Hola Héctor, he estado leyendo la traducción del enlace que me has dado. Y para ser franco, de entrada me pareció complejo. Después de una rato de lectura, realice una búsqueda sobre el tema en español. como para tener mas clara la cosa, porque estaba medio enredado. Y me tope con esta pagina, que sin mucha vuelta pone un ejemplo, el cual "aclaro"..., de alguna manera mi duda. OJO con el ejemplo, que yo de entrada no me di cuenta de que hay un error en el código. En donde ponen el código del modulo (estándar), colocaron Cass1 y es Clase1, un pequeño pero crucial detalle. En fin, después de hacer unas pruebas con el ejemplo en cuestión (que por cierto, es interesante), realice los cambios necesarios para lograr el objetivo. En el Modulo estándar se debe colocar: Option Explicit Dim ObjectHoja As New Clase1 Sub RefrescarFormulario() Set ObjectHoja.RefreshForm = Application End Sub En el modulo de clase se coloca: Option Explicit Public WithEvents RefreshForm As Application Private Sub RefreshForm_SheetActivate(ByVal Sh As Object) UserForm1.TextBox1 = ActiveSheet.Name End Sub Y en UserForm_Initialize, se coloca el nombre de la macro (modulo estándar), en este caso la macro que se llama "RefrescarFormulario" o Call RefrescarFormulario Y eso es todo. Aclaración: Si cambian el nombre de modulo de clase, recuerden hacer lo mismo en el modulo estándar. Muchísimas gracias Héctor, no tienes idea como lo agradezco, podemos marcar el tema como solucionado, Saludos...
  12. Buenas Héctor, muchas gracias, leeré, y releeré y si me quedan dudas lo leeré de nuevo, y cualquier duda pregunto 👍
  13. Buenas Antoni, me encantaría subirlo, pero estoy muy crudo, apenas estoy empezando a crear las macros que llevara el complemento (y me tope con esta dificultad), y para evitarme tener a la vista (mientras trabajo) tantos Modulos y formularios, pretendo colocar cada herramienta en archivo separados, para después unir todo en un solo archivo, hacer lo propio en XML y convertir el archivo en Add-in. Pero básicamente es un formulario (no tiene nada especial), y al cambiar de hoja, me gustaría que evaluara nuevamente si hay o no objetos ocultos en la hoja activa (primer CheckBox). Ya que cuando inicia el formulario hace la evaluación por hoja y libro (segundo CheckBox). Es decir, la detección de cambio de hoja, detona la ejecución de la macro que actualiza los dos CheckBox Trate de ver si el TextBox me tomaba el nombre de la hoja activa en tiempo de ejecución (al ir cambiando de hoja), probé con ActiveSheet.Name, pero como era de esperarse no funcionó. Busque en la red, y encontré el método "Form.Refresh", pero segun entiendo solo aplica para Access, mas allá de esto no encuentro informacion relevante que me ayude a avanzar. La otra alternativa (poco elegante y practica) era un ComboBox que cargue las hojas del libro activo, pero no tiene gran sentido y pierde un poco la gracia, pero si no consigo como hacerlo, tendrá que ser así, y tendré que colocar como modal el formulario, lo cual tampoco me hace gracia. Creo que lo importante seria conseguir que reconozca el cambio de hoja, pero estoy muy tierno en VBA :-/. Subo un formulario X, ya que realmente me encuentro tratando de hacer que haga lo que quiero y no he hecho mas nada. Si alguien tiene alguna idea de como lograrlo se lo agradecería mucho. Saludos. Prueba1.xlsm
  14. Hola Haplox. Ciertamente se que cuento con esa opcion. Pero lo que estoy haciendo es un complemento (un grupito de herramientas en el Ribbon para tenerlas a la mano), por tanto no se trabajara directamente sobre la hoja del complemento, sino, sobre otros libros que no tienen ni las macros ni el formulario. Y al cambiar de hoja, necesito que unos dos o tres CheckBox actualicen su estado (true/false) dependiendo de ciertas condiciones. Es por eso que me surge la duda. Agradecido por tus comentarios
×
×
  • Create New...

Important Information

Privacy Policy