Jump to content

Antoni

Members
  • Content Count

    10,116
  • Joined

  • Last visited

  • Days Won

    548

Everything posted by Antoni

  1. Hola: No acabo de entender cual es el problema que tienes, pero voy a darte un par de datos que a lo mejor te ayudan. Cada vez que añades un objeto, por ejemplo una imagen, se añade a la colección Shapes, el índice con el que se añade es el valor de Shapes.Count, en ese momento, puedes cambiarle el nombre, por ejemplo: Shapes(Shapes.Count).Name = Range("A1")[/CODE] Luego para localizar la imagen: [CODE]For x = 1 To Shapes.Count If Shapes(x).Name = Range("A1") then ..................... ..................... End if Next x[/CODE] Si no te es suficiente la explicación, por favor detalla un poco mas el problema que tienes. Salu2. Antoni.
  2. Hola: En el adjunto están resueltas tus ultimas peticiones. Al escribir en cualquiera de los textbox del primer formulario, cuando pulses el botón editar, aparecerá el texto respectivo en el textbox del segundo formulario. El tamaño del textbox del segundo formulario se irá agrandando de forma automática a medida que vayas escribiendo sobre él. Dicho tamaño, se calcula con un algoritmo en base a la fuente "Tahoma", tamaño 8 y el promedio de ocupación de una línea de acuerdo con el tamaño del textbox. Si se cambia el tamaño del textbox, o la fuente o su tamaño, deberá modificarse la fórmula del algoritmo. Salu2. Antoni. DosUserforms .zip
  3. Hola: Relacionado con el tema: https://www.ayudaexcel.com/foro/showthread.php?t=12427 Salu2. Antoni.
  4. Hola, aquí de nuevo al "Capitán xTrueno", en defensa de las macros contra las ordas "Formulianas": Sub Ordenar() Range("B15:C22").Select Selection.Sort _ Key1:=Range("C15"), Order1:=xlDescending, DataOption1:=xlSortNormal, _ Key2:=Range("B15"), Order2:=xlAscending, DataOption2:=xlSortNormal, _ Header:=xlNo, MatchCase:=False, Orientation:=xlTopToBottom End Sub [/CODE] [color=red][b][size=4]Una fórmula es un intento de macro que salió mal[/size][/b][/color] Saludos, Antoni.
  5. Hola: No acabo de entender muy bien para que quieres un segundo formulario, pero bueno, si es lo que quieres. En el adjunto, hay 2 formularios: El primero con tres TextBox y un botón "Editar", que llama al segundo formulario, actualizando la propiedad .Tag del formulario con los valores 1, 2, 3, en función del TextBox donde nos hayamos posicionado por última vez. El segundo, tiene un TextBox , dos botones "+" para agrandar el TextBox y "-" para disminuirlo. Tiene un tercer botón, "OK" que al pulsarlo coloca el valor del Textbox en el TextBox del primer formulario, en función del valor de la propiedad .Tag, y a continuación se descarga. Salu2. Antoni. DosUserforms .zip
  6. Hola: No hay ningún problema: En el botón de UserForm1, solo tienes que poner UserForm2.Show. Asegúrate que ambos formularios tienen la propiedad ShowModal = True (Es la que viene por defecto). Si quieres que se pueda trabajar con los dos a la vez cambia dicha propiedad a False. Salu2. Antoni.
  7. Hola: Pues vaya, vaya, y eso que la celda es de color verde, si llega a ser de color rojo,....ja,ja Muy bueno Pegones. Salu2. Antoni.
  8. Hola: Dices: Si los registros repetidos se borran ¿Como dejamos constancia? ¿Pasamos los repetidos a otra hoja? Salu2. Antoni.
  9. Hola: Gracias por mostrar la solución. Tomo nota para futuras ocasiones. Estaba claro que era un problema de conversión de datos, la gracia era saber a que tipo había que convertir. No entiendo el porqué CDate() no funciona, bueno.....lo importante es que se ha soukucionado. Salu2. Antoni.
  10. Hola Mauricio: No pienso que tengas que retractarte de nada, ya que en el fondo estamos hablando de funcionalidades distintas para entornos distintos. Siempre he bloqueado y protegido hojas y celdas con tu propuesta, y voy a seguir haciendolo. Saludos cordiales. Antoni.
  11. Hola de nuevo: Pienso que en esta vida todo tiene su momento. La propuesta de Mauricio es la adecuada para una hoja de usuario final en la que no queremos que el usuario no pueda tener acceso a las celdas con fórmulas. Mi propuesta, está pensada para un entorno de trabajo en el que queremos protegernos de un error de manipulación en el momento en que estamos creando la hoja. Una vez terminada la hoja, decidimos si la protegemos o no. Aunque, coincidirás conmigo Mauricio, que bloquear celdas es un autentico rollo. De la misma manera que existe Ctrl+c y Ctrl+v para copiar y pegar, debería existir Ctrl+? para bloquear las celdas seleccionadas. Y ya para terminar, pienso que mi propuesta tiene la ventaja de la inmediatez, es decir, pongo una fórmula en una celda, e inmediatamente ya está protegida. Salu2 a to2. Antoni.
  12. Hola: En lo referente a mi propuesta: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1").Interior.ColorIndex = xlNone Then If Target.HasFormula = True Then ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End If End If End Sub [/CODE] si optas por la propuesta de Mauricio: [CODE]Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1").Interior.ColorIndex = xlNone Then With Target If .HasFormula Then .Offset(, VBA.IIf(.Column = Sh.Columns.Count, -1, 1)).Select End With End If End Sub [/CODE] [b][size=4][color=red]La macro permanecerá activa mientras la celda "A1" permanezca sin color de relleno.[/color][/size][/b] Salu2. Antoni.
  13. Hola: Aclarar que existen otras formas de proteger celdas, como bien dice Mauricio en una de sus respuestas: También comenta Mauricio que: Si quereis ver todas sus respuestas relacionadas con este tema: https://www.ayudaexcel.com/foro/showthread.php?t=12435 Gracias Mauricio. Salu2. Antoni.
  14. Hola: Cada vez que leo una respuesta tuya, aprendo algo, desconocia: Union(Columns(.Column), Rows(.Row)).BorderAround [/CODE] Se acabó poner bordes 4 veces (Left, Right,Top y Bottom) cada vez que quiero contornear un rango. Salu2. Antoni.
  15. Hola: Con permiso de Potter, me he permitido la libertad de traducir los comentarios y estructurar un poquito su aporte: He cambiado el color "Blanco" por el color "SinColor", y aclarar que, la celda activa quedará rellenada de color verde y que se eliminará cualquier color que pudiera haber en la fila de la celda activa inmediatamente anterior a la actual celda activa: Dim FilaAnterior As Long Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) ' Rellenamos la celda activa de color verde ActiveCell.Interior.Color = vbGreen ' Si es la primera vez, guardamos la fila de la celda activa como fila anterior If FilaAnterior = Empty Then FilaAnterior = ActiveCell.Row ' Si no es la primera vez, eliminamos el color de relleno de la fila anterior ' si la celda activa está en otra fila que la fila anterior ElseIf Not FilaAnterior = ActiveCell.Row Then Rows(FilaAnterior).Interior.ColorIndex = xlNone End If ' Guardamos la fila de la celda activa como fila anterior FilaAnterior = ActiveCell.Row End Sub [/CODE] y también funcionaría así: [CODE] Dim FilaAnterior As Long Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) On Error Resume Next ActiveCell.Interior.Color = vbGreen If Not FilaAnterior = ActiveCell.Row Then Rows(FilaAnterior).Interior.ColorIndex = xlNone FilaAnterior = ActiveCell.Row End Sub [/CODE] Salu2. Antoni.
  16. Hola foreros: Hoy algo sencillo, cada vez vez que seleccionemos una celda, y esta contenga una fórmula, saltará a la de al lado, y de esta forma indirecta evitaremos que una manipulación errónea nos borre las fórmulas. Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.HasFormula = True Then _ ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + 1).Select End Sub [/CODE] Pues nada, nos vemos y tomamos unas copas. Salu2. a todos, todos....Antoni
  17. Hola: Quizás en este caso no es estrictamente necesario, pero por malas experiencias, te recomiendo parar el reloj cuando ya no sea necesario. Una vez tenemos la celda en rojo desactivamos el método OnTime del objeto Application. Sub cambiocolor() Sheets("Hoja1").Range("A1").Interior.ColorIndex = 3 Application.OnTime Now + Range("a1"), "cambiocolor", Schedule = False End Sub[/CODE] Salu2. Antoni.
  18. Hola: Os pensabais que era broma, pues no, vamos a ver diversos métodos para rellenar la celda activa de color verde. Método Fleming Seleccionar la celda Click en la paleta de colores de relleno Click en el color verde Y un chino muy pequeñito para meterlo dentro de la macro y haga todo el proceso. Método 1-Antoni ActiveCell.Interior.Color = vbGreen[/CODE] [b]Método 2-Antoni[/b] [CODE]ActiveCell.Interior.Color = 65280[/CODE] [b]Método 3-Antoni[/b] [CODE]ActiveCell.Interior.Color = RGB(0, 255, 0)[/CODE] [b]Método 4-Antoni[/b] [CODE]ActiveCell.Interior.ColorIndex = 4[/CODE] [b]Método verzulsan[/b] [CODE]For x = 0 To 63 For y = 0 To 2 Next y Next x ActiveCell.Interior.ColorIndex = x ^ (1 / y) [/CODE] No os riais, os prometo que funciona. Para quitarle el color [CODE]ActiveCell.Interior.ColorIndex = xlNone[/CODE] Pido disculpas a Fleming y Verzulsan por si les ha molestado algún comentario, no ha sido esa mi intención, ni mucho menos, ha sido con el ánimo de distendir un poco las comunicaciones y hacerlas un poco mas amenas. Saludos cordiales a todos. Antoni.
  19. Hola: Mejor sube un ejemplo, porqué no acabo de entender exactamente lo que quieres. Salu2. Antoni.
  20. Hola: Leete este aporte: https://www.ayudaexcel.com/foro/showthread.php?t=12368 Salu2. Antoni.
  21. Hola: Jamás hubiera imaginado que esto iba a dar tanto juego. Para Fleming: A ver como pones tu solución en una macro. Para Mauricio: Definitivamente, tu solución es la mejor. Para Versulzan: No te quepa duda que tu "solución" la ha usado alguien. Para todos: Hay una solución que te va a llevar 0 segundos: Procura que la hoja la copie otro,...,ja,ja,ja... Gracias a todos por el entusiasmo, y dado el éxito de este aporte, mañana enviaré otro: "Como rellenar una celda de color verde" Hasta la próxima y saludos a todos. Antoni.
  22. Hola: No soy un experto en este tema, pero no estoy de acuerdo con RORO1981, o al menos no estoy de acuerdo con todo. Precisamente las referencias que te indica"Falta........", es porque tu proyecto las usa, o por lo menos las tiene incluidas, por tanto, lo que debe hacerse, es revisar las referencias que no utilizas y desmarcarlas, pero el resto, deben incluirse. En el proyecto de VBA, pulsa Referencias y luego el botón "Examinar", busca el archivo .OCX o .DLL que corresponde a esa referencia, aceptalos, y marcalos. Si esos archivos, no existen en el nuevo PC, cópialos del tuyo, y vuélcalos en \Windows\Sysytem32\ e inclúyelos en el proyecto, repitiendo el punto anterior. Salu2. Antoni.
  23. Hola: A ver si es esto: Range("M12").FormulaLocal = Replace(Range("C3").FormulaLocal, "MIN", "PROMEDIO") [/CODE] Esta instrucción, copia la fórmula de la celda "C3" sobre la celda "M12", cambiando "MIN" por "PROMEDIO". Saludos. Antoni.
  24. Hola Verzulsan: Vamos a centrarnos. Evidentemente que hay que decirle la hoja que quieres copiar. "MiHoja", es solo un ejemplo. Me despistó tu comentario acerca de "renombrar la hoja", y con el defecto de no leer atentamente, entendí que te referías a darle nombre a la hoja de destino. La hoja destino se genera como "Hojan", siendo n el Nº de hoja que le toque. Si quiere darle nombre a la hoja destino. ActiveSheet.Name = "MiHojaNueva"[/CODE]
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png