Páginas

Estamos Para Ayudarle

Si desea que le resolvamos cualquier duda, con respecto a Excel, deje un comentario en el Post de Bienvenida o envie un correo a hector.eduardo.pm@hotmail.com ;)

[MACRO] Ayuda con macro (gestion de error)


Usuario:
Buenas tardes serian tan amable de ayudarme con una inquietud que tengo como puedo colocar un msg box que logre salir cuando en input box no coloque el nombre del libro correcto en vez del error "se ha producido el error '9' en tiempo de ejecución: subdice fuera del intervalo

Sub cmbCopiar()
Dim a As String
Dim d As String
a = InputBox("Nombre del Archivo: ", "MiArchivo")
d = a
If d = "" Then
Else
Workbooks(a).Sheets("Mana_Infantil").Activate
Selection.Copy
Workbooks("libro1.xlsm").Sheets("Mana_Infantil").Activate
ActiveSheet.Range("a2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.Dialogs(xlDialogSaveAs).Show
End If
End Sub


Gracias

Respuesta:
La manera más fácil de hacer esto es untilizando On Error, te quedaría algo como esto:

Sub cmbCopiar()
Dim a As String
Dim d As String
    a = InputBox("Nombre del Archivo: ", "MiArchivo")
    d = a
    If d = "" Then
    Else
        On Error GoTo ControlError  ' Activa la rutina de control de errores.
        Workbooks(a).Sheets("Mana_Infantil").Activate
        Selection.Copy
        Workbooks("libro1.xlsm").Sheets("Mana_Infantil").Activate
        ActiveSheet.Range("a2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        Application.Dialogs(xlDialogSaveAs).Show
        On Error GoTo 0 ' Desactiva la detección de errores.
    End If
  
    Exit Sub    ' Salir para evitar el controlador.
ControlError:   ' Rutina de control de errores.
    MsgBox "Error en la lectura de datos"
End Sub


Saludos

Usuario:
Muchas garcías funciona ecxelente

[MACROS] Como se autoborra archivo excel, en cuanto desbloqeen


Usuario:
Hola, quiera saber si hay una forma como una macro para borrar un archivo en cuanto se desbloque, debido a que tengo un archivo que creé, pero no me gustaría que hicieran mal uso con la información que tengo oculta y en las fórmulas, esta bloqueado las hojas y el libro en estructura, y se que es muy sencillo violar las claves ya que hay macros que lo hacen, por lo que me gustaría encontrar una forma de que el archivo se auto borre en cuanto lo desbloqueen. ¿Habrá alguna forma?

Respuesta:
Buenas noches amigo
 
Existe una posible solución aplicando Worksheets("Hoja1"). ProtectContents . Esto le devolvera True si la hoja esta protegida y False si la hoja esta desprotegida.
 
Con el siguiente ejemplo básico podrá ver como funciona el comando.
 
Private Sub CommandButton1_Click()
    If Worksheets("Hoja1").ProtectContents = True Then
        Range("B2").Select
        ActiveCell.FormulaR1C1 = "Protegido"
    End If
   
    If Worksheets("Hoja1").ProtectContents = False Then
        Range("B2").Select
        ActiveCell.FormulaR1C1 = "Desprotegido"
    End If
   
End Sub


Para que funcione correctamente debe cambiar el formato de la celda "B1" para desbloquear la misma.
 
Intente programar el código de una hoja para que verifique cualquier cambio, usando el evento Changue de Worksheet, y que en cada verificación compruebe que la hoja esta protegida. Si la hoja esta desprotegida, entonces que seleccione toda la hoja y la borre.
 
Si me me da algo de tiempo, puedo hacer el intento de programarle una hoja de ejemplo.
 
Saludos

Usuario:
Bien. Una respuesta aceptable.

[MACROS] Botón para guardar en pdf


Usuario:
Hola, tengo un botón en una hoja llamada "formulario" y quiero que cuando clique en él me guarde unos rangos de la hoja "enmarcador" d1733:q1787 a un archivo en pdf en la ruta c:/albaranes y ese archivo vaya llevando el nombre que hay en la celda c3 de la hoja "formulario".
¿Podéis ayudarme?

Respuesta:
Buenas tardes amigo, disculpe la tardanza en responder.
 
Imagino que usa Excel 2007 o superior. Esta es una posible solución a lo que desea hacer:
 
Sheets("formulario").Select
Range("D1733:Q1787").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= Range("C3").Value, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
 OpenAfterPublish:=False

Saludos

Usuario:
Gracias, eso era la solución, ahora voy a seguir con este mismo botón para incluir en el código que me has dado pa posibilidad de imprimirlo.

[MACROS] Macro para concatenar


Usuario:
Buenos días
Necesito una macro que me concatene las columnas bcde pero que antes de guardarme la concatenación en la columna f me inserte una columna ya que en f hay datos gracias

Respuesta:
Buen día amigo, disculpe la tardanza en responder.
 
Una posible solución podría ser el siguiente código:
Columns("F:F").Select
Selection.Insert Shift:=xlToRight
Range("F1").Value = Range("B1").Text + Range("C1").Text + Range("D1").Text + Range("E1").Text

 
Saludos

Usuario:
Muchas gracias excelente respuesta

[MACROS] Cambiar texto en celda en función del día de la semana


Usuario:
Hola, espero puedas ayudarme con lo siguiente:
 
Tengo puesto en la celda B1 la fecha de hoy sin hora.
 
Range("B1").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
 
Y lo que quiero es que cuando ejecute la macro en la celda B6 aparezca un texto determinado, dependiendo de si el día de la semana es Sábado o si es otro día cualquiera de la semana.
El código que tengo puesto es el siguiente:
 
If "=TODAY()" = Saturday Then
    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "LOS CAMBIOS VIGENTES HASTA LAS 16:00 H DEL LUNES ____/____ SON:"
    Else
    Range("B6").Select
    ActiveCell.FormulaR1C1 = _
        "LOS CAMBIOS VIGENTES HASTA LAS 16:00 H SON:"
End If
 
Es correcto este código o debería poner If Range("B1") = Saturday then. Etc.
 
Muchas gracias de antemano

Respuesta:
Buen día mi amigo, disculpe la tardanza en responderle. 
 
Efectivamente lo correcto es If Range("B1") = Saturday then
 
Saludos

Usuario:
Bien. Una respuesta aceptable.

[FORMULAS] Duda excel


Usuario:
Tengo dos celdas que quiero relacionar en C1 por la operación "división". (A1 / B1). ¿Qué expresión tengo que escribir en C1 para que me dé siempre un resultado numérico y nunca me salga un mensaje de error? Esto sucede cuando:
1) En B1 (que es el divisor) hemos introducido un cero o, por error, una letra o signo distinto a un número.
2) En A1 hemos introducido una letra o un signo distinto a un número.
Es evidente que la fórmula debe decir algo así: "dividir A1 entre B1 y indicar el resultado en C1, a excepción de que B1 sea igual a 0 o a un signo distinto de un número, o A1 sea un signo distinto a un número, con lo que el resultado indicado será "Sin solución". Me resulta imposible formularlo con la gramática del excel.
Muchas gracias.

Respuesta:
Buen día, disculpe la tardanza en responder
 
Para esto puede utilizar la función SI en conjunto con la función ESERROR de la siguiente forma:
=SI(ESERROR(A1/B1);"";A1/B1)
 
Saludos

Usuario:
Excelente. Una fantástica solución.

[MACROS] Buscar Dato traer modificar actualizar


Usuario:
Buenas tardes expertos, les explico
Tengo un libro con 8 hojas, en las cuales la hoja uno esta vacía y las demás completas de datos.
En la hoja1 quiero ingresar un numero, ese número puede estar UNA SOLA VEZ en cualquiera de las hojas, que me lo busque y me traiga toda la horizontal de ese dato para yo poder modificarlo y que se actualice en la hoja correspondiente de donde lo encontró.
La idea es hacerlo con botones de buscar y actualizar y algo por el estilo, donde yo pueda entrar el "numero a buscar" le doy click en buscar, que me traiga toda la horizontal, la modifique en la misma hoja1 y luego le de click a actualizar y me actualice la modificación en la hoja correspondiente.
 
De ante mano muchas gracias.

Respuesta:
Buenas tardes amigo, disculpe la tardanza
 
Aquí le dejo un archivo como posible solución a su problema:
EJEMPLO Buscar_Dato_Traer_Modificar_Actualizar.html
 
Saludos
http://formulas-en-excel.blogspot.com/

Usuario:
Muchas gracias, muy buen dato.