-
Contador de contenido
11884 -
Unido
-
Última visita
-
Días con premio
910
Todo se publica por Antoni
-
Utiliza la función CDbl() en lugar de Val().
-
Macro boton siguiente en visualizador
tema contestó a Antoni en MarianoCruz Macros y programación VBA
A ver si lo he entendido. Prueba visualizar.xlsm -
No todos los controles tienen las mismas propiedades: Private Sub Guardar(sh As Worksheet, r As String, ctrl As Control) If ctrl.Visible Then Select Case TypeName(ctrl) Case "Label" sh.Range(r).Value = ctrl.Caption Case "TextBox" sh.Range(r).Value = ctrl.Value End Select End If End Sub
-
Prueba a ver si es esto lo que quieres. CALENDARIO PRUEBA (1).xlsm
-
Te dejo una función, puedes usarla en macros y formularios o como fórmula. Function Edad(Identidad As String) As Variant Dim Año, Mes, Día '-- If Not IsNumeric(Identidad) Or Not Len(Identidad) = 11 Then Edad = "#Error Identidad" Exit Function End If '-- Año = CInt(Left(Identidad, 2)) If Año > Year(Date) - 2000 Then Año = Año + 1900 Else Año = Año + 2000 End If '-- Mes = CInt(Mid(Identidad, 3, 2)) Día = CInt(Mid(Identidad, 5, 2)) Edad = Year(Date) - Año '-- If Mes > Month(Date) Or _ (Mes = Month(Date) And Día > Day(Date)) Then Edad = Edad - 1 Exit Function End If End Function Cumpleaños Foro.xlsm
-
Condicional de colores con vba para columnas
tema contestó a Antoni en jorgealv Macros y programación VBA
Prueba esta macro, vale para cualquier cantidad de filas/columnas. Const Naranja As Long = 6403322 Const Morado As Long = 11423218 Const Verde As Long = 4896057 Const Rojo As Long = 6709491 '-- Sub Resaltes() Dim Sales As Range, Fcst As Range Application.ScreenUpdating = False '-- For x = 2 To Range("A" & Rows.Count).End(xlUp).Row Step 2 For y = 4 To Cells(1, Columns.Count).End(xlToLeft).Column '-- Set Fcst = Cells(x, y) Set Sales = Cells(x, y).Offset(1) '-- Sales.Interior.ColorIndex = xlNone Fcst.Interior.ColorIndex = xlNone '-- If Sales <> "" Then If Round(Sales) = 0 And Round(Fcst) > 0 Then Sales.Interior.Color = Rojo Fcst.Interior.Color = Rojo End If '-- If Round(Sales) <> 0 And Round(Sales) < Round(Fcst) Then Sales.Interior.Color = Naranja Fcst.Interior.Color = Naranja End If '-- If Round(Sales) = Round(Fcst) Then Sales.Interior.Color = Verde Fcst.Interior.Color = Verde End If '-- If Round(Sales) <> 0 And Round(Fcst) < Round(Sales) Then Sales.Interior.Color = Morado Fcst.Interior.Color = Morado End If '-- End If Next Next End Sub -
Mostrar hoja en Listbox según selección en Combobox
tema contestó a Antoni en pinoji Macros y programación VBA
Otra forma a partir de las tablas, los nombres de las hojas, el combo bancos y el nombre de las tablas deben ser iguales. Para Foro.xlsm -
No encuentra el valor de la variable prod en esta instrucción: Set pro_d = .Range("A5:A" & ufd).Find(prod)
-
Te propongo ir creando las filas de forma automática a medida que vayas entrando información . Cuando selecciones una celda de la columna A vacía, si hay información en la celda de la fila anterior, las fórmulas se insertarán de forma automática. Abre el adjunto y selecciona la celda A50 para ver el resultado de lo que te acabo de describir. PRUEBA INSERTAR 500 FILAS.xlsm
-
Macro Fusionar Hojas de Excel con ordenación
tema contestó a Antoni en darkyto Macros y programación VBA
Click derecho sobre el botón\Asignar macro y escoge la macro que quieras. -
Sube tu archivo y explícate mejor.
-
Debes cambiar la secuencia, primero seleccionar la carpeta de destino y luego los archivos. Sub SelectMultipleArch() '------------------------------------------------------------ ' Escoger carpeta de destino With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Seleccione carpeta de destino" .ButtonName = "Aceptar" .InitialFileName = Range("j2") 'ruta que pongo en celda' "C:\" If .Show = -1 Then 'si se escoge una carpeta y se cliquea aceptar Secfolder = .SelectedItems(1) End If If Secfolder = "" Then Exit Sub 'se ha pulsado cancelar End With '------------------------------------------------------------ ' Escoger archivos a copiar With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = True .Title = "Selecciona archivos" .Filters.Clear .Filters.Add "excel", "*.xlsm;*.xls" .Filters.Add "todos", "*.*" If .Show = True Then For Each fPath In .SelectedItems FileCopy fPath, Secfolder & "\" & extractFileName(fPath) Next End If End With End Sub
-
Prueba así: Private Sub Worksheet_Change(ByVal Target As Range): On Error GoTo ErrorFecha '------------------------------------------------------- If Not Intersect(Target, Range("A1830")) Is Nothing Then If IsDate(Range("A1830")) Then If Range("A1830") < Date - 7 Or Range("A1830") > Date + 3 Then MsgBox "No puede superar los siete días", vbCritical Rows(1830).Delete Range("A1830").Select Else If Not Intersect(Target, Rows(1830)) Is Nothing Then Rows(3).EntireRow.Delete Target.Offset(0, 1).Select End If End If End If End If Exit Sub '------------------------------------------- ErrorFecha: Range("A1830").ClearContents End Sub