| ||||
| FAQ`s Ofimatica Tengo mas voluntad que conocimiento, asi que me limite a adaptar al formato FAQ un post que me sirvio y que me parecio muy completo (autores abrahamvj, 3pies y landa59) Macro con la Función Edición/Buscar: Simplificada Sub búsqueda() Cell.Find(What:=”palabra”).Activate End sub .. y extendida Sub busqueda() Cell.Find(What:="hola", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate End sub Variantes:
Cell.Find(What:=textbox1).Activate End sub
[B:B] (toda la columna B) [3:3] (toda la fila 3) Range("A2:B99") (el rango especificado).
On Error GoTo lineaerror Cells.Find(What:="hola", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Exit Sub lineaerror: MsgBox "Error" End Sub
__________________ -- Nunca te des por vencido, aún vencido -- Web Última edición por BrujoNic; 25/09/2007 a las 08:31 |
| ||||
| Re: FAQ`s Ofimatica Tutorial: Cómo mostrar una barra de progreso con un formulario de usuario en Excel Si tiene una macro de Microsoft Visual Basic para Aplicaciones que toma mucho tiempo terminando, quizás desea dar una indicación que la macro progresa correctamente al usuario. En este artículo se describe cómo crear una barra de progreso con un formulario de usuario en Microsoft Excel. Más información Microsoft proporciona ejemplos de la programación sólo para ilustración sin garantía que se expresa o implícito. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado Este artículo presupone que está familiarizado por usted con el lenguaje de programación que se muestra y las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento determinado. Sin embargo, ellos no modificarán estos ejemplos para proporcionar que agregó funcionalidad o construir procedimientos para cumplir sus necesidades específicas. Cree el formulario de usuario En el ejemplo siguiente, una subrutina de Visual Basic rellena rango de celdas grandes con un número aleatorio. El indicador le muestra que la macro se ejecuta correctamente. 1.Abra un libro nuevo en Excel. 2.En Microsoft Office Excel 2003 y versiones anteriores de Excel, haga clic en Herramientas, elija Macro y a continuación, haga clic en Editor de Visual Basic. En Microsoft Office Excel 2007, haga clic en Visual Basic en el grupo Código en la ficha Programador. Nota Para mostrar la ficha Programador en la Cinta, siga estos pasos: a. Start Excel 2007 hace clic en el Microsoft Office Button y a continuación, hace clic en Opciones de Excel. b. En el cuadro de diálogo Opciones de Excel, haga clic en Popular y a continuación, haga clic para activar la casilla de verificación Show Developer tab in the Ribbon. 3.En el menú <B>Insertar</B>, haga clic en <B>UserForm</B> 4.Dibuje un control Label en el formulario de usuario. 5.Cambie las propiedades siguientes del control Label en los valores siguientes: Property Value -------------------------------------------- Caption Now updating. Please wait... Nota Si la ventana Propiedades no es visible, haga clic en Ventana Propiedades en el menú Ver. 6.Dibuje un control Frame en el formulario de usuario. 7.Cambie las propiedades siguientes del control Frame en los valores siguientes: Property Value ----------------------------- Name FrameProgress 8.Dibuje un control Label en el control Frame. 9.Cambie las propiedades siguientes del control Label en los valores siguientes: Property Value ------------------------------------- Name LabelProgress BackColor &H000000FF& SpecialEffect fmSpecialEffectRaised Escriba el código de macro 1.Haga doble clic en el formulario de usuario para abrir la ventana Código para el formulario de usuario. 2.En el módulo, escriba el código siguiente para el evento UserForm Activate: Private Sub UserForm_Activate() ' Set the width of the progress bar to 0. UserForm1.LabelProgress.Width = 0 ' Call the main subroutine. Call Main End Sub 3.En el menú Insertar, haga clic en Módulo. 4.En la ventana Código para el módulo, escriba el código siguiente: Sub ShowUserForm() UserForm1.Show End Sub Sub Main() Dim Counter As Integer Dim RowMax As Integer, ColMax As Integer Dim r As Integer, c As Integer Dim PctDone As Single Application.ScreenUpdating = False ' Initialize variables. Counter = 1 RowMax = 100 ColMax = 25 ' Loop through cells. For r = 1 To RowMax For c = 1 To ColMax 'Put a random number in a cell Cells(r, c) = Int(Rnd * 1000) Counter = Counter + 1 Next c ' Update the percentage completed. PctDone = Counter / (RowMax * ColMax) ' Call subroutine that updates the progress bar. UpdateProgressBar PctDone Next r ' The task is finished, so unload the UserForm. Unload UserForm1 End Sub Sub UpdateProgressBar(PctDone As Single) With UserForm1 ' Update the Caption property of the Frame control. .FrameProgress.Caption = Format(PctDone, "0%") ' Widen the Label control. .LabelProgress.Width = PctDone * _ (.FrameProgress.Width - 10) End With ' The DoEvents allows the UserForm to update. DoEvents End Sub 5.Vuelva a Excel. 6.En Excel 2003 y versiones anteriores de Excel, elija Macro en el menú Herramientas y a continuación, haga clic en Macros. En Excel 2007, haga clic en Macros en el grupo Código en la ficha Programador. 7.En el cuadro de diálogo Macro, haga clic para seleccionar ShowUserForm y a continuación, haga clic en Ejecutar. Un cuadro de diálogo que tiene una barra de progreso roja aparece. La barra de progreso aumenta como la subrutina Main rellena las celdas de la hoja de cálculo. La subrutina ShowUserForm muestra el formulario de usuario. El procedimiento que se asocia al evento Activate del formulario de usuario llama a la subrutina Main. La subrutina Main rellena celdas con números aleatorios. La subrutina además llama a la subrutina UpdateProgressBar que actualiza el control Label del formulario de usuario. http://support.microsoft.com/kb/211736/es
__________________ -- Nunca te des por vencido, aún vencido -- Web Última edición por Pablus00; 25/09/2007 a las 21:37 |
| ||||
| Re: FAQ`s Ofimatica - Como evitar visualizar el proceso de una Macro? (Beneficio: agiliza la velocidad de ejecución) Colocar al principio de la macro: Application.ScreenUpdating=false y al final: Application.ScreenUpdating=true (Si alguien tiene voluntad para postear, sera bienvenido, asi armamos una biblioteca de recursos que nos sirva a todos, y evitamos preguntas repetidas)
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| |||
| Macro para crear Barra de Herramientas en el Menu El siguiente procedimiento crea una barra de herramientas en el menu principal Sub Crear Barra() 'Declaración de variables Dim' Dim cMenu1 As CommandBarControl Dim cbMainMenuBar As CommandBar Dim iHelpMenu As Integer Dim cbcCutomMenu As CommandBarControl 'BORRAR YA EXISTENTE 'Aqui se borra la barra de herramientas en caso que ya exista una con el nombre On Error Resume Next Application.CommandBars("Worksheet Menu Bar").Controls("&Nombre Barra").Delete On Error GoTo 0 Set cbMainMenuBar = _ Application.CommandBars("Worksheet Menu Bar") 'CREAR NUEVO MENU' Set cbcCutomMenu = _ cbMainMenuBar.Controls.Add(Type:=msoControlPopup, _ Before:=10) cbcCutomMenu.Caption = "&Nombre Barra" 'AGREGAR BOTONES DENTRO DEL MENU 'Boton de sub menu With cbcCutomMenu.Controls.Add(Type:=msoControlButton) .Caption = "Sub Menu" .OnAction = "MacroAsociada" End With End Sub Este procedimiento se puede crear cuando automaticamente se abra el acrhivo y borrar la barra apenas se cierre para que no aparezca en otros archivos mediante el sigueinte metodo: Sub Auto_Open() Application.Run ("Macro222") end sub 'y Sub Auto_Close() On Error Resume Next Application.CommandBars("Worksheet Menu Bar").Controls("&Reportes e Indicadores").Delete On Error GoTo 0 End Sub Cualquier duda por favor avisen |
| ||||
| Re: FAQ`s Ofimatica Os pongo a continuación un muy buen manual para los que estén empezando a programar con VB en excell. Ahí lo llevais: http://www.sicem.biz/docs/tutoriales...l.PDF/download Un saludo |
| ||||
| Definicion y Tips para la programacion 1 1- Conceptos básicos-Definiciones:WORKBOOK: libro de trabajo. La expresión ActiveWorkbook hace mención al libro activo, en caso de haber más de uno abierto SHEET: hoja de cálculo. Se utilizan también las siguientes expresiones: Worksheet, ActiveSheet (en este caso se hace referencia a la hoja activa)RANGE: hace referencia al rango o conjunto de celdas a las que se aplicará una acción. Existen distintas maneras de mencionar un rango de celdas: Range("A4:C8"), Range(variable), Range("A:A;D:D"), Selection CELL: hace referencia a la celda. Se pueden utilizar expresiones como Cells(2,5), Cells(fila,col), ActiveCell, Selection Hecho el repaso, a continuación verán las principales instrucciones, que ya sabrán dónde colocarlas. Si alguna rutina les presenta dificultad, pueden enviarme un mail con los comentarios al respecto. 2- Instrucciones básicas:Trabajando con Libros:
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Definicion y Tips para la programacion 2 Trabajando con Hojas: 1- Activar o seleccionar otras hojas: Sheets("Hoja2").Activate o Sheets(2).Select2-Seleccionar la hoja anterior o siguiente: 3-Datos de la hoja: 4-Copiar datos de una hoja a otra: 5- Ocultar filas o columnas: 6-Proteger o desproteger una hoja: ActiveSheet.Protect "contraseña" 'proteger con contraseña7-Insertar filas o columnas: Workbooks("Libro1").Sheets("Hoja2").Column(i).Sele ct8-Eliminar filas o columnas: ActiveSheet.Row(n).Select9-Insertar una imagen en una hoja: ActiveSheet.Pictures.Insert(ruta).Select 'la ruta entre comillas: "C:\Mis docu\Foto1.jpg"10-Imprimir la hoja seleccionada: ActiveWindow.SelectedSheet.PrintOut Copies:=1, Collate:=TrueTrabajando con celdas: 1- Formas de seleccionar una celda o un rango de celdas: Range("B7").Select 'selecciona la celda B72- Seleccionar celdas a cierta distancia de la celda activa: Sheets(1).Range("A1").Offset(2,3).Select 'selecciona la celda D33- Formato de celdas: Range("B2:D10").Select4- Guardar la dirección de una celda en una variable: lugar= ActiveCell.Address 'guarda la referencia absoluta5- Copiar un comentario en otra celda: ActiveCell.Offset(0,1).Value = ActiveCell.Comment.Text6-Seleccionar celdas y borrarlas: Range(rango). Select o Cells.Select7- Ampliar un rango seleccionado 8- Combinar celdas selecccionadas: Range("B1:E1").Select9- Seleccionar el rango donde se encuenra la celda activa: Range("B2").CurrentRegion.Select10- Seleccionar hasta la última celda no vacía: Range("A2", Range("A2").End(xlDown)).Select 'seleciona desde A2 hacia abajo
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Definicion y Tips para la programacion 3 Trabajando con una colección: introducir un nombre para cada hoja del libro activo: Dim MiNombre as StringEjemplo2: introducir valores para cada celda de un rango Dim celdita as RangeEjemplo3: introducir los mismos valores en celdas de todas las hojas Dim hoja as SheetsTrabajando con objetos: (En cada punto encontrarán varios ejemplos. Ver otras rutinas en Macros) 1- Llamando a un Userform, desde un botón: En una hoja de Excel, los botones que lanzan una acción, pueden ser colocados con la barra de Formularios o Cuadro de Controles.
Sub mostrando ()
Private Sub CommandButton1_Click()2- Asignando valores a los Cuadros de texto: Ejemplos de cómo registrar datos en los textbox:3- Volcar datos de un UserForm a la hoja: Cells(fila, col).Value = TextBox1.Value4- Cargar datos a un ListBox de un UserForm: Private Sub UserForm_Activate()
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Bloquear Btn Cerrar (X) de un Form Excel Hola colegas, luego de mucho buscar encontre un codigo que oculta el boton cerrar (X) de un form, solamente peguen el codigo dentro del formulario: Private Const MF_BYPOSITION = &H400 Private Const MF_REMOVE = &H1000 'API Functions that need to be called to Disable the Close Button on the Form Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private hWnd As Long Private Sub UserForm_Initialize() Dim hMenu As Long Dim menuItemCount As Long 'Get the handle of the User Form 'This is used because there is no property present in the UserForm that gives the HWND hWnd = FindWindow(vbNullString, Me.Caption) 'Get the Handle of the Menu hMenu = GetSystemMenu(hWnd, 0) If hMenu Then 'Get the Number of Items present in the Menu menuItemCount = GetMenuItemCount(hMenu) 'Remove the system menu Close menu item. 'The menu item is 0-based, so the last 'item on the menu is menuItemCount - 1 Call RemoveMenu(hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION) 'Remove the Separator line from the Menu Call RemoveMenu(hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION) 'Redraw the menu, this will refresh the Title Bar and disable the X button Call DrawMenuBar(hWnd) End If End Sub
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| |||
| Respuesta: FAQ`s Ofimatica NO DEJAR QUE CIERRE EL FORM CON LA "X" DEL FORM DOBLE CLIC EN EL FORMULARIO Y SELECCIONAR EL EVENTO "QueryClose" PARA ESCRIBIR LO SIGUIENTE If CloseMode = 0 Then MENSAJE = MsgBox("HACER CLIC EN SALIR") Cancel = 1 End If |
| ||||
| Para hacer tu Excel + profesional: Ocultar todas las barras y mas ¿Cómo debo hacer para desactivar una barra de comandos Esta línea de código se desactiva la barra de menús hoja de cálculo Application.CommandBars ("Barra de Menú hoja de cálculo"). Enabled = False Esta línea de código se desactiva la barra de herramientas Application.CommandBars ("Standard"). Enabled = False Esta línea de código se deshabilita el menú de la célula (menú al hacer clic derecho en una célula) Application.CommandBars ("Cell"). Enabled = False Importante: siempre debe utilizar el nombre Inglés de la barra de comandos en el código. Si utiliza el nombre local de la barra de comandos no funciona. Si usted no sabe el nombre de Inglés para una barra de comandos se puede ejecutar esta macro. Se agregará una nueva hoja de su libro con una lista de todos los nombres (Inglés y local). ------------------------ Para ocultar todas las barras del excel: Sub Disable_Command_Bars_1() 'This will disable all Command bars Dim Cbar As CommandBar For Each Cbar In Application.CommandBars Cbar.Enabled = False Next End Sub ---------------------------------- Ocultar la Barra de Status, y de formula: Application.DisplayFormulaBar = False Application.DisplayStatusBar = False
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Excel: Metodo OnKey (combinacion de teclas) Uso del metodo Application.OnKey para bloquear combinaciones de teclas no deseadas como: Alt+f11 / Alt+F8 / Crtl+C / etc Ej: Ctrl+P Application.OnKey "^{P}", "" (no muestra el form para imprimir) Application.OnKey "^{P}" (vuelve al estado anterior) --------------------------------------------------- TABLA DE REFERENCIAS: SHIFT "+" CTRL "^" ALT "%" Backspace {Backspace}, {BS}, {BKSP} Break {Break} Caps Lock {CapsLock} Delete {Delete}, {Del} Down Arrow {Down} End {End} Enter {Enter}, ~ Escape {Esc} Help {Help} Home {Home} Insert {Insert}, {Ins} Left Arrow {Left} Num Lock {NumLock} Page Down {Pgdn} Page Up {Pgup} Print Screen {PrtSc} Right Arrow {Right} Scroll Lock {ScrollLock} Tab {Tab} Up Arrow {Up} F1 - F16 {F1} .. {F16}
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Si necesitan Colocar un grafico en un formulario una alternativa es usa el componente OWC Chartspace, se puede agregar simplemente desde las referencias del VBA como "Microsoft Office Web Component x.x" Se puede configurar previamente o lo mas interesante, es hacerlo en tiempo de ejecucion, que permitira modificarlo a gusto e incluirlo en parte de cualquier rutina. Admite datos para graficar desde excel, de otro componente simil hoja de calculo (spreadsheet) de access o tmb se puede importar por sql a cualquier bd Hay poca informacion sobre como configurarlo bien a gusto, asi que les paso un link que me facilito mucho el trabajo: http://msdn.microsoft.com/en-us/libr...ffice.10).aspx
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Respuesta: FAQ`s Ofimatica Si tuviste problemas con FileCopy o SaveCopyas en tus macros, el siguiente codigo te resuelve el problema, copia el mismo documento xls o archivos externos sin importar si estan en uso o no (x ej para hacer un backup de tu base de datos access) Si existe un archivo de destino con el mismo nombre, lo reemplaza por la nueva copia, ideal Backups Sub Copiar_Archivo() On Error GoTo NoCopia Ejemplo con un archivo externo, cambiar la ruta indicada: origen = ThisWorkbook.Path & "\" & "Base_Datos.mdb" 'En mi caso, tengo mi base de datos en la misma carpeta que el archivo de excel que estoy ejecutando 'Ahora el destino destino = "C:\backup.mdb" 'Esta ruta la puedes cambiar poniendo un DirListBox y un DriveListBox, eso lo dejo a tu imaginacion 'Ahora como copiar el archivo Set fs = CreateObject("Scripting.FileSystemObject") fs.copyfile origen, destino MsgBox "La copia se realizó con exito", vbInformation, "Copia realizada" Exit Sub NoCopia: If Err.Number > 0 Then MsgBox Err.Number & " " & Err.Description, , "Error al copiar archivo" Screen.MousePointer = vbDefault Err.Clear Exit Sub End If End Sub
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Compactar BD Access desde Excel con ADO
Código:
Dim jro As jro.JetEngine Set jro = New jro.JetEngine jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\nwind2.mdb;Jet OLEDB:Database Password=test", _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\abbc2.mdb;Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=test" Nota: El tipo de OLEDB:Engine Jet = 4 es sólo para los archivos MDB de Jet 3.x formato. Si este valor se deja, la base de datos se actualiza automáticamente a la versión 4.0 (Jet OLEDB:Engine tipo = 5). Consulte la tabla siguiente para los valores adecuados para Jet OLEDB:Engine tipo: Contraer esta tablaAmpliar esta tabla Tipo de OLEDB:Engine JetX.x archivos MDB con formato de Jet1JET102JET113JET2X4JET3X5JET4X
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Calculos Matematicos con Inputbox y textbox Dejo una aclaracion muy util a la hora de trabajar con textbox / inputbox que me ha ahorrado muchas horas de prueba y error: 1) El valor de un Textbox es una variable string/variant, en cristiano, es variables de tipo texto. 2) Las funciones CCur y CDbl son funciones de conversión de tipo de variable a variable de tipo numérico. 3) En operaciones aritméticas debemos usar únicamente variables de tipo numérico. 4) La función Val, extrae la parte numérica de un texto, no es, repito, no es, una función de conversión de tipo de variable a variable de tipo numérico. Ejemplo: Val("175,25") = 175 porqué la coma no es un número CCur("175,25") = 175,25 porqué interpreta la coma como el separador decimal Conclusiones: 1ª) Convertir siempre los TextBox a variable de tipo numérico antes de operar con ellos. 2ª) No usar nunca la función Val para convertir un Textbox a variable de tipo numérico.
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Respuesta: FAQ`s Ofimatica Les dejo una macro para ocultar el puntero del mouse en excel mientras corre nuestra macro, solo un detalle .... Private Declare Function ShowCursor Lib "USER32" _ (ByVal fShow As Integer) As Integer Sub hide() While ShowCursor(False) >= 0 Wend End Sub Sub show() While ShowCursor(True) < 0 Wend End Sub Ojo que al ocultarlo no se ve en excel ni en la ventana edicion de VBA por lo que tengan cuidado para volver a mostrarlo
__________________ -- Nunca te des por vencido, aún vencido -- Web |
| ||||
| Proteccion de Hoja en Excel - Variantes Agrego algunas propiedades no tan conocidas a la hora de proteger una hoja en excel:
Al aplicar la protección que está solicitando la protección de toda la hoja. Hay tres niveles de protección de hoja en la interfaz de usuario. Ellos son: DrawingObjects: Variante opcional. Fiel a proteger las formas. El valor predeterminado es False. Contenido: La variante opcional. Fiel a proteger el contenido. Para ver un cuadro, esto protege todo el gráfico. Una hoja de cálculo, esto protege a las células individuales. El valor predeterminado es True. Escenarios: Variante opcional. Fiel a proteger a los escenarios. Este argumento sólo es válido para las hojas de trabajo. El valor predeterminado es True Hay un nivel cuatro en el VBA, es decir: UserInterfaceOnly: Variante opcional. True para proteger la interfaz de usuario, pero no las macros. Si se omite este argumento, la protección se aplica tanto a las macros y la interfaz de usuario. Todas las celdas están bloqueadas por defecto. El bloqueo de una celda no tiene ningún efecto a menos que la proteccion de la hoja se aplique
__________________ -- Nunca te des por vencido, aún vencido -- Web |
Este tema le ha gustado a 14 personas