Jump to content

smartacm

Members
  • Content Count

    62
  • Joined

  • Last visited

  • Days Won

    1

smartacm last won the day on January 12 2011

smartacm had the most liked content!

About smartacm

  • Rank
    Advanced Member
  • Birthday 01/14/1983
  1. mmm... Yo diria que subas tu ejemplo, no creo que se comprenda muy bien lo que mencionas En los Forms puedes controlar el flujo con los botones u otros controles!!!! Saludos!
  2. Re: Pasar conjunto de datos a una hoja El probelma es esta línea: caja.Selected(caja.ListIndex + 1) = True [/CODE] Ya que el item que está seleccionado no es el que tú eliminaste o algo así Funciona bien si eliminas la línea Saludos!
  3. Re: Pasar conjunto de datos a una hoja Hola! Sólo sustituye tu código por este: Un consejo, acostubra a nombrar todos los controles que usas, esto te dá una mejor forma de trabajar y a demás se entendera mejor tu código. También trata de nombrar los controles colocando qué control es, por ejemplo yo coloco txtNombre, cbtCancelar, lstUsuarios, lblNombre, etc. Si te fijas no es tan necesario mencionar qué tipo de control es cada uno de lo que liste ya que el tipo son las primeras 3 letras y el nombre asignado representa el dato que se coloca. Private Sub CommandButton5_Click() caja.Selected(caja.ListIndex + 1) = True Dim filla1 As Long Dim ws As Worksheet Set ws = Worksheets(1) Dim x As Double 'encontrar la siguiente fila vacia fila1 = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 'recorre toda la lista For x = 0 To caja.ListCount - 1 'obtiene cada una de las filas de la lista remplazo = Split(caja.List(x), "-") 'verificar que se ingrese nombre de proyecto If Trim(caja.Value) = "" Then Me.caja.SetFocus Exit Sub End If 'pasar los datos a la base de datos ws.Cells(fila1, 1).Value = remplazo(1) ws.Cells(fila1, 2).Value = remplazo(0) ws.Cells(fila1, 3).Value = remplazo(2) ws.Cells(fila1, 4).Value = remplazo(3) ws.Cells(fila1, 5).Value = remplazo(4) ws.Cells(fila1, 6).Value = remplazo(5) 'encontrar la siguiente fila vacia fila1 = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Next End Sub [/CODE] Saludos!
  4. Yo uso para bloquear y desbloquear mi proyecto estos 2 procedimientos: '************************************************************************************ '***** NOMBRE: UnprotectVBProject '***** TIPO: Sub Procedimiento '***** OBJETIVO: Desprotege el proyecto '***** PARAMETROS: WB - Libro a desproteger '***** Password - Contraseña de protección del libro Sub UnprotectVBProject(WB As Workbook, ByVal Password As String) 'VARIABLES DEL PROYECTO Dim vbp As VBProject, oWin As VBIDE.Window Set vbp = WB.VBProject 'VARIABLES DEL LIBRO Dim wbActive As Workbook Set wbActive = ActiveWorkbook 'CONTADOR A USAR Dim i As Integer 'SI EL LIBRO NO ESTÁ PROTEGIDO SALE DEL PROCEDIMIENTO If vbp.Protection <> vbext_pp_locked Then Exit Sub End If 'MUESTRA EL LIBRO DEL PROYECTO WB.Activate 'SEN ENVIAN LA TECLAS PARA EL DESBLOQUEO Application.OnKey "%{F11}" SendKeys "%{F11}%TE" & Password & "~~%{F11}", True 'SI FALLA AL DESBLOQUEAR If vbp.Protection = vbext_pp_locked Then MsgBox "Fallo al desproteger el proyecto" End If 'MUESTRA EL LIBRO ACTIVO wbActive.Activate End Sub '************************************************************************************ '***** NOMBRE: protectVBProject '***** TIPO: Sub Procedimiento '***** OBJETIVO: Protege el proyecto '***** PARAMETROS: WB - Libro a desproteger '***** Password - Contraseña de protección del libro Sub protectVBProject(WB As Workbook, ByVal Password As String) 'VARIABLES DE PROYECTO Dim vbp As VBProject, oWin As VBIDE.Window Set vbp = WB.VBProject 'LIBRO A USAR Dim wbActive As Workbook Set wbActive = ActiveWorkbook 'CONTADOR A USAR Dim i As Integer 'SI EL PROYECTO NO ESTÁ PROTEGIDO SALE DEL PROCESO If vbp.Protection <> vbext_pp_locked Then Exit Sub End If 'ACTIVA EL PROYECTO WB.Activate 'SE ENVÍA LA SECUENCIA DE TECLAS PARA PROTEGER EL PROYECTO Application.OnKey "%{F11}" SendKeys "%{f11}^r%hp^{pgdn}{+}{tab}" & Password & "{tab}" & Password & "~%q", True 'SI HUBO ERROR AL PROTEGER MANDA UN ERROR If vbp.Protection = vbext_pp_none Then MsgBox "Fallo al Proteger el Proyecto" End If 'REGRESA AL LIBRO ACTIVO wbActive.Activate End Sub [/CODE] No tengo otra forma de hacerlo que no sea con SendKeys Deberás agregar esta referencia a tu proyecto: Microsoft Visual Basic for ApplicationsExtencibility X.X Como se usan es: [CODE] UnprotectVBProject ThisWorkbook, "myContrasena" 'o protectVBProject ThisWorkbook, "myContrasena" [/CODE] Con esa referencia incluso puedes eliminar o agregar líneas a un Módulo dado!! Sólo es cuestión de revisar qué puedes hacer! Saludos!
  5. mmm... No creo que se pueda, pero esa es mi opinion!! Se puede usar una macro con un formulario para que el usuario sólo pueda acceder a una hoja específica (Hay un tema sobre esto). Pero no pueden abrirlo 2 usuarios y trabajar simultaneamente a menos que se comparta el libro (Una opción de Excel), el inconveniente es que un libro compartido no puede contener macros! Habría que replantearte para qué necesitas esto, si subes un ejemplo sería más práctico!
  6. Re: Workbook_SheetSelectionChange de otro libro Gracias por su ayuda con esto puedo comenzar a trabajar en lo que necesito. Doy el tema por terminado. Saludos!
  7. Re: Workbook_SheetSelectionChange de otro libro Ya revisé más a fondo el archivo que se adjuntó en el tema que mencioné en el post anterior y sí me sirvió para lo que necesitaba sólo me falta afinarlo un poco para ligarlo al reporte generado con mi complemento de Excel. Gracias, con esto ya comprendo un poco más como se manejan los eventos con módulos de Clases!!! Hice una prueba con este código y funcionó perfectamente en el libro activo. En un módulo de Clase Option Explicit Private WithEvents libro As Workbook Private Sub Class_Initialize() Set libro = Application.ActiveWorkbook End Sub Private Sub Class_Terminate() End Sub Private Sub libro_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Sheet1" And Target.Column = 1 Then 'Acciones a Realizar Else End If End Sub Private Sub libro_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Sheet1" And Target.Column = 1 Then Target.Interior.Color = vbGreen Else End If End Sub [/CODE] y en un módulo normal para iniciar la clase: [CODE] Private ini As Class1 Sub inicializa() Set ini = New Class1 End Sub [/CODE] Sólo una duda para cerrar el tema! Para terminar la clase sería con un sub colocando: set ini= nothing? O qué hago para quitar el evento de la memoria? Esto ya que como es un complemento quiero que sólo se ejecute cuando el libro con determinado nombre se abra y quitar esto cuando lo cierren Saludos!
  8. Re: Workbook_SheetSelectionChange de otro libro Encontré este: Evento mouse_move en la hoja https://www.ayudaexcel.com/foro/showthread.php?t=7950&highlight=modulo+clase Está muy bien, cómo lo aplicaría para el evento que necesito? No me he adentrado a las clases, si tienen un tema donde hayan explicado las clases me sería de ayuda! Saludos!
  9. Re: Workbook_SheetSelectionChange de otro libro Sip, yo tampoco he dado con alguna Cuando encuentre algo lo anexo!! Gracias!
  10. Re: Ayuda con Codigo en tu código la línea ".End(xlUp).Offset(1, 0).Row " Revisa tu ejemplo, me parece que estas sentencias van así: iFila = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row[/CODE] Remplazala por las 2 líneas que colocaste y debe de funcionar! Te manda Error ya que la sentencia End debe de ir precedida de un rango Saludos
  11. Oks, lo que pasa es que no es un contador, yo creo que está mal el nombre del campo. Si revisas el código para lo que sirve es para asignae el ID en la tabla y no como contador de registros, esto ya que a mí me interesaba tener un ID único en la tabla y que fuese autonúmerico. Emulando un poco cuando generas una base de datos en access y el ID es autonúmerico. Si tienes 3 registros y eliminas el 3, cuando das de alta uno nuevo debe de ser con el número 4 ya que el 3 fue capturado y borrado. Hola Ferchoiz! Si quieres abre un tema y en base a ese yo creo que no sólo yo sino todos podemos echarte una mano. Saludos!
  12. Re: Workbook_SheetSelectionChange de otro libro Tendrán algo al respecto? Saludos!!
  13. Re: Rellenar una columna hasta la ultima celda de una tabla de datos. Es fácil si tienes una fila de referencia que no tenga espacios en blanco y que los datos lleguen al final de tu talba. Por ejemplo en tu caso, K3 es donde vas a rellenar y L es la columna que tiene los datos seguidos hasta el final de tu tabla (Por ejemplo, puede ser cualquiera) ange("K3").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-1])" Selection.AutoFill Destination:=Range("K3:" & Range("K3").Offset(0, 1).End(xlDown).Offset(0, -1).Address) [/CODE] Saludos!
  14. Re: Seleccionar la Fila completa en donde se encuentre el rango Prueba con esto: Target.Rows.EntireRow.Locked = True Después de Rows puedes agregar la sentencia EntireRow para que el efecto sea en toda la fila! Saludos!
  15. Hola a todos! No he encontrado algo al respecto. En resumen tengo un complemento de excel (XLA) en cual instalo en mi PC y uso para generar algunos reportes entre otras cosas Mi pregunta es: Se puede hacer que este complemento cache el cambio de selección o las modificaciones en una Hoja X de otro libro Y? Como un Workbook_SheetSelectionChange o un Workbook_SheetChange pero la programación debe estar en mi complemento cachando los eventos de una hoja X de un libro Y Gracias!!!
×
×
  • Create New...

Important Information

Privacy Policy