Jump to content

Antoni

Members
  • Posts

    11,414
  • Joined

  • Last visited

  • Days Won

    806

Everything posted by Antoni

  1. Debes suscribirte al foro en cualquiera de sus modalidades, de lo contrario, solo tienes derecho a consultar,
  2. Prueba a ver si es esto lo que buscas: Sub Prueba_Ytb_2() Dim FileToOpen As Variant Dim OpenBook As Workbook Application.ScreenUpdating = False FileToOpen = Application.GetOpenFilename(Title:="Seleccionar archivo", FileFilter:="Excel Files(*.xls*),*xls*") If FileToOpen <> False Then Set OpenBook = Application.Workbooks.Open(FileToOpen) OpenBook.Sheets(7).Range("C6:K" & OpenBook.Sheets(7).Range("C" & Rows.count).End(xlUp).Row).Copy ThisWorkbook.Worksheets("Hoja1").Range("C" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues OpenBook.Close End If Application.ScreenUpdating = True End Sub
  3. También: Sub fecha_inicio() anyo = Year(Sheets("Repsol").Range("B1")) mes = Format(Month(Sheets("Repsol").Range("B1")), "00") dia = Format(Day(Sheets("Repsol").Range("B1")), "00") Sheets("Repsol").Range("B2") = anyo & mes & dia End Sub
  4. Los pequeños detalles son los que más cuesta encontrar, como en el juego de las diferencias. Modifica la línea señalada en el procedimiento: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 5 Then With Userform1.Listbox1 .RowSource = "" If Target.Address Like "$AA$*" Then .RowSource = "Lista!AL6:AL7" If Target.Address Like "$AT$*" Then .RowSource = "Lista!AH6:AI12": .ColumnWidths = "40" If Target.Address Like "$AT*" Then .RowSource = "Lista!AN6:AN18" If Target.Address Like "$BE*" Then .RowSource = "Lista!AH6:AI12": .ColumnWidths = "40" If Target.Address Like "$BF*" Then .RowSource = "Lista!AN6:AN18" If Target.Address Like "$BQ*" Then .RowSource = "Lista!AH6:AI12": .ColumnWidths = "40" If Target.Address Like "$BR*" Then .RowSource = "Lista!AN6:AN18" If Target.Address Like "$CB*" Then .RowSource = "Lista!AH6:AI12": .ColumnWidths = "40" If Target.Address Like "$CC*" Then .RowSource = "Lista!AN6:AN18" If Not Range("C" & Target.Row) = "" And Not .RowSource = "" Then ´<------------------------------ Userform1.Show ActiveCell.Offset(0, 1).Select End If End With End If End Sub
  5. Prueba así a ver si te vale: Private Sub CargarLista() Dim x As Long, Nombre As Range CmbID.Clear For x = 28 To Hoja4.Range("E28").End(xlDown).Row CmbID.AddItem Hoja4.Range("E" & x) Set Nombre = Hoja2.Columns("A").Find(Hoja4.Range("E" & x), , , xlWhole) If Not Nombre Is Nothing Then CmbID.List(CmbID.ListCount - 1, 1) = UCase(Nombre.Offset(, 1)) '<------ CmbID.List(CmbID.ListCount - 1, 2) = Hoja4.Range("F" & x).Text Next TxtTotalR.Text = FormatNumber(Hoja4.Range("F26"), 2) For x = 0 To CmbID.ListCount - 1 If CmbID.List(x, 2) = "" Then CmbID.ListIndex = x Exit For End If Next End Sub
  6. Con lo fácil y bien que se ve 🤣: Function Suma(Celda As Range) As Double With Celda If .Value > 0 Then If .Offset(1) < 0 Then Suma = Suma + .Offset(1) If .Offset(2) < 0 Then Suma = Suma + .Offset(2) End If End With End Function
  7. Después de ver la solución de John Jairo V, corrijo mi propuesta: =SI(A1<0;0;SI(Y(A2<0;A3<0);A2+A3;SI(A2<0;A2;SI(A3<0;A3;0)))) Ambas soluciones funcionan igual, o sea, hemos entendido lo mismo, no obstante, por su sencillez, me quedaría con la de John.🙂
  8. =SI(A1<=0;0;SI(Y(A2<=0;A3<=0);A2+A3;SI(A2<=0;A2;SI(A3<=0;A3;0))))
  9. Mejor sube tu archivo para poder ver en que entorno nos movemos.
  10. Otra forma Sub EncabezadoArrayII() Dim MyArray As Variant MyArray = Range("A1", Cells(1, Columns.Count).End(xlToLeft)) End Sub En este caso el array es de 2 dimensiones por lo que te has de referir a un elemento así: MyArray(1, c) siendo c el número de columna. En cualquier caso, puede que el array sea innecesario, basta con recorrer la fila 1 con: For y = 1 To Cells(1, Columns.Count).End(xlToLeft).Column ... ... Next
  11. Sub EncabezadoArray() Dim MiArray() As String, y As Integer For y = 1 To Cells(1, Columns.Count).End(xlToLeft).Column ReDim Preserve MiArray(y - 1) MiArray(y - 1) = Cells(1, y) Next End Sub
  12. En el archivo que has subido no hay datos, por lo que el ejemplo que has puesto es imposible de analizar. Tampoco especificas cual es el formulario en el que hay que actuar. A veces el exceso de explicaciones solo deriva en la perdida de interés en la persona que podría ayudarte y si además no especificamos claramente cuales son los elementos que intervienen en el problema, las posibilidades de ayuda se reducen enormemente. Por último, debes facilitar las cosas a quien te quiera ayudar, en el adjunto, debes eliminar el control de acceso al abrir el archivo y debes quitar la contraseña al proyecto VBA.
  13. Cambia .Value por .Text al cargar el listbox. Ejemplo: Me.LISTA.List(Y, 4) = Hoja8.Cells(fila, 5).Text
  14. Puedes intentarlo con una macro usando la API de Google. Busca en Google: VBA Google translate API
  15. Las subvenciones siempre se calculan a partir del importe antes de impuestos. O sea, para mi sería, en F8:
  16. Sube un Excel con un ejemplo de como tienes los datos y comenta donde quieres que vaya a fórmula.
  17. Sube tu archivo y pon un ejemplo de lo que quieres hacer.
  18. Revisa el adjunto. BUSCADOR PRECIOS SUBCONTRATAS.xlsm
  19. Si lo subes al foro, a lo mejor alguien se anima a echarte una mano, si él, lo dudo mucho.
  20. Por si quieres una macro: Private Sub Worksheet_Change(ByVal Target As Range): On Error Resume Next Application.ScreenUpdating = False If Not Intersect(Target, Columns("E")) Is Nothing Then Application.EnableEvents = False uf = Range("C" & Rows.Count).End(xlUp).Row Range("G5:G" & uf) = "" For x = 5 To uf If Range("C" & x) = "SPLITTER" Then fila = x Else If Not Range("E" & x) = "" Then letra = UCase(Right(Range("E" & x), 1)) pon = Left(Range("E" & x), Len(Range("E" & x)) - 1) Set expande = Columns("A").Find(pon, , , xlWhole) If Not expande Is Nothing Then Select Case letra Case "A": ofset = 1 Case "B": ofset = 2 Case "C": ofset = 3 Case "D": ofset = 4 End Select Range("G" & expande.Row + ofset) = Range("A" & fila) & Range("C" & x) End If End If End If Next Application.EnableEvents = True End If End Sub Te dejo un archivo con la macro de evento de hoja aplicada. Cada vez que modifiques un valor de la columna E se actualizará la columna G automáticamente. Libro1.xlsm
  21. ¿Y También se podrían combinar las celdas de 5 en 5 respetando valores, para ello en un rango vacío de la hoja, combinar 5 celdas, por ejemplo Z1:Z5, copiar el rango y pegado especial en la columna A solo formato.
  22. Si te vale una macro y subes un archivo para poder probar, lo intento.
  23. Hola a todos:Quiero hacerle un regalo a mi nieta por su 20 cumpleaños y había pensado en comprarle un PC portatil.Mi nieta es estudiante universitaria y lo necesita para su desempeño habitual (Apuntes, trabajos, videconferencias, clases virtuales,....música, cine)Os dejo el enlace de Amazón para ver las características.PC LENOVO IdeaPad 3Me gustaría saber vuestra opinión al respecto, si lo creeis suficiente y si sabeis de alguna otra alternativa asequible (600 € max)Gracias
×
×
  • Create New...

Important Information

Privacy Policy