Excel macro con campos combinados

buen dia experto.

tengo un macro a un 90 % de terminar pero, no me lee unos datos en una celda combinada me gustaría tener sua ayuda para resolver este problema

1 respuesta

Respuesta
1

Aquí estoy para lo que necesites, pásame en que estás trabado. No obstante te propongo que visites www.programarexcel.blogspot.com ahí podrás bajar ejemplos variados que podrás aplicar a lo que estás haciendo.

buen dia , gracias por tu atención, cual seria el medio para pasarte mi archivo o solo el código es necesario?

Pásame el archivo en www.programarexcel.blogspot.com súbelo mediante el formulario o envíamelo al mail.

Vi tu archivo agrega CDate aquí " Fecha = CDate(Dia & " " & Mes & " " & Hora)" , aparte fijate que la fecha noviembre 2012 tiene entre la letra y los num espacios cargados de más.

estoy revisando

Dale revisa y me comentas, antes de puntuar por favor repregunta si es necesario así quedas satisfecho con la respuesta.

Hola, ha quedado bien lo de la fecha y las oras gracias, me gustaría saber como poder arreglar la parte de las celdas combinadas que no me las esta leyendo

Yo he trabajado con el archivo y hacia lo que tu quieres no se exactamente en que parte no te está funcionando, ¿qué necesitarías arreglar de las celdas combinadas? Acuérdate que esas celdas combinadas tenían unos espacios de más lo que provocaba problemas qutálos de la plantilla y va todo de maravilla. En que parte no te funciona me podrías específicar.

Buenas tardes gracias nuevamente por su atención, te enviare el archivo al correo q me proporcionaste indicando donde es el problema que tengo ,gracias y me disculpo de antemano

En ese caso antes de que cree la fila con la fecha y hora lo que tienes que hacer es verificar si está combinada la celda en dicho caso tomas la de abajo mediante un offset sino sigues habitualmente como deberías

Para saber si la celda esta combinada podrías hacer

comb= ActiveCell.MergeCells

If comb Then

Activecell. Offset(1,0) ' si esta combinada se vaya a la fila de abajo

... sigues con el procedimiento

End If

Fijate ensaya lo que te propongo. En definitiva es saber si la celda esta combinada en ese caso se corra una fila mas abajo. Comenta luego

aun no me sale ,estoy un poco confundido

Disculpame, pero con lo que ya te había pasado funcionaba la macro, tengo muchísimas preguntas pásame el archivo de nuevo en www.programarexcel.blogspot.com

ok te lo mando

No recibí nada aún.

deja cheko por que ya lo envie

Usa este código

Sub remodelar()
Dim i, j, Ulti As Integer
Dim Dia, Mes, Fecha, Hora As String
Dim Respuesta As Integer
Dim rango As Range
Application.ScreenUpdating = False
Worksheets("carril").Select
Set rango = Cells.Find("PROMEDIO")
If rango.Column > 1 Then
Respuesta = MsgBox("Parece que hay columnas que sobran al principio, si no las quitamos puede haber error. ¿Las quitamos?", vbInformation + vbYesNo, "Parece que es un segundo uso o posterior.")
If Respuesta = vbYes Then Range("A:" & Chr(63 + rango.Column)).Delete
End If
Worksheets("carril").Rows("1:3").Delete Shift:=xlUp
Columns("A:A").Insert Shift:=xlToRight
Columns("A:A").ColumnWidth = 8.57
Columns("A:A").Insert Shift:=xlToRight
Columns("A:A").ColumnWidth = 28
Columns("A:A").Insert Shift:=xlToRight
Columns("A:A").ColumnWidth = 40
While Range("C65536").End(xlUp).Row <= 1
Range("C:C").Delete
Wend
Ulti = Range("C65536").End(xlUp).Row - 1
If Ulti < 2 Then
Application.ScreenUpdating = True
Exit Sub
End If
For i = 2 To Ulti
If Cells(i, 4).MergeCells = True And Cells(i - 1, 4) Then
Dia = Cells(i - 1, 4)
Else
Dia = Cells(i, 4)
End If
Hora = Cells(i, 5)
If Val(Dia) > 1 Then
If Cells(i, 3) <> "" Then
Mes = Cells(i, 3)
j = InStr(Mes, " ")
Mes = Left(Mes, j + 18)
End If
Fecha = CDate(Dia & " " & Mes & " " & Hora)
If Val(Dia) < 10 Then Fecha = " " & Fecha
Hora = Cells(i, 2)
Cells(i, 1) = Fecha '& " " & Hora
End If
'Cells(i, 2) = Cells(i, 5)
If Cells(i, 8) <> "" Then Cells(i, 8) = Str(Val(Cells(i, 8)) / 100)
If Cells(i, 10) <> "" Then Cells(i, 10) = Str(Val(Cells(i, 10)) / 100)
If Cells(i, 15) <> "" Then Cells(i, 15) = Str(Val(Cells(i, 15)) / 100)
If Cells(i, 17) <> "" Then Cells(i, 17) = Str(Val(Cells(i, 17)) / 100)
If Cells(i, 22) <> "" Then Cells(i, 22) = Str(Val(Cells(i, 22)) / 100)
If Cells(i, 24) <> "" Then Cells(i, 24) = Str(Val(Cells(i, 24)) / 100)
Next
Cells(Ulti + 2, 6) = Cells(Ulti + 1, 6)
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Visita www.programarexcel.blogspot.com

muy bien a quedado exelente

Me alegro que te haya servido, por favor cierra la pregunta, pero antes de puntuar pregunta lo necesario para que quedes satisfecho con la respuesta, y de esa manera des un puntaje acorde con tu satisfacción.

No olvides visitar www.programarexcel.blogspot.com ahí iré agregando procedimientos o macros de VBA que puedes bajar y adaptar a tus necesidades. Por si te interesa te dejo el link sobre como llenar un listbox con varias columnas. http://programarexcel.blogspot.com/2013/05/llenar-listbox-de-varias-columnas-con.html

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas