Principales respuestas
Combinar celdas de excel desde vb6

Pregunta
-
Saludos!!!.... tengo un problema. En excel estoy manejando la exportacion de un MSFLEXGRID, q es asi formato TICKET, el caso q lo q quiero hacer es q cuando me haga la exportacion, por ejemplo si son 2 articulos los q compra el cliente, me aparecen los datos en excel desde la fila 9 col A hasta la D (Articulo, Cantidad, Precio y Total); entonces, cuando se termina el traslado de todos los datos a excel, en este caso terminaria en la fila 10, dejo una fila vacia y en la fila 12 - columna 3 me pone lo q es el puro titulo de TOTAL, y en la fila 12 - columna 4 me pone ya el resultado (por ejemplo $1,250), el problema es q cuando lo mando a imprimir en un ticket, no me sale completo ni TOTAL ni el precio a pagar, y ya le movi de muchas maneras y no queda, entonces lo q quiero es q desde el mismo vb6 me combine las celdas. Por ejemplo cuando hago el traslado desde vb a excel tengo esto....
Call Formato_Excel19(5, Heading()) 'llamamos a la funcion que da el formato al nuevo workbook
V = 9 'V es Renglon
H = 1 'H es columna
Do While Not rs19.EOF 'esto nos sirve pa leer los datos desde
u = u + 1
objExcel19.ActiveSheet.Cells(V, H) = rs19!Nombre
objExcel19.ActiveSheet.Cells(V, H + 1) = rs19!Precio
objExcel19.ActiveSheet.Cells(V, H + 2) = rs19!Cuantos
objExcel19.ActiveSheet.Cells(V, H + 3) = rs19!TOTAL
V = V + 1
rs19.MoveNext
Loop
objExcel19.ActiveSheet.Cells(V + 1, H + 2) = "TOTAL"objExcel19.ActiveSheet.Cells(V + 1, H + 3) = txtTotal.Text
Pero aqui en esta ultima fila yo le asigno los valores en donde quiero q me aparezca lo q es el puro titulo de TOTAL y a un lado me aparece la cantidad, y en sí las coordenadas donde me aparecen es en C12 (TOTAL) y D12(txtTotal.text) y lo q quiero hacer es de q me combine las celdas A12 y B12 y q ahi me aparezca TOTAL y luego me combine C12 y D12 y me aparezca lo q tenga txtTotal.text.
Ahora, eso es por ejemplo cuando solo se hace la venta de 2 articulos, pero cuando se hace de 5, por eso estoy manejando variables y no numeros constantes, entonces es lo q quiero saber como le puedo hacer.
Muchísimas gracias y espero me puedan ayudar!!!!
Respuestas
-
Hola Romssel, para combinar celdas en excel mediante codigo se usa la propiedad Merge del objeto Range, es decir, en tu caso para combinar las celdas A12 y B12 y luego combinar las celdas C12 y D12 tendrías que hacer lo siguiente :
objExcel19.ActiveSheet.Range("A12:B12").Merge objExcel19.ActiveSheet.Range("C12:D12").Merge
Luego si lo que quieres es hacer que ese rango sea variable, deberías hacer lo siguiente:
Dim Columna As Integer Dim Fila As Integer Columna = 65 ' En el codigo Ascii 65 es la letra A, luego Chr(Columna) = "A" Fila = 12 ' Para convertir en texto 12 harías Cstr(Fila) With objExcel19.ActiveSheet .Range(Chr(Columna) + CStr(Fila) + ":" + Chr(Columna + 1) + CStr(Fila)).Merge .Range(Chr(Columna) + CStr(Fila) + ":" + Chr(Columna + 1) + CStr(Fila)).Value = "TOTAL" .Range(Chr(Columna + 2) + CStr(Fila) + ":" + Chr(Columna + 3) + CStr(Fila)).Merge .Range(Chr(Columna + 2) + CStr(Fila) + ":" + Chr(Columna + 3) + CStr(Fila)).Value = txtTotal.Text end With
Ten en cuenta que lo he aplicado a tu caso particular, Range("A12:B12") y Range("C12:D12") y observa tambien que no uso Celdas (Cells), sino rangos (Range) para poderlos combinar (no puedes combinar una sola celda). Columna y Fila podrían tomar los valores que a ti te interesa para cada momento en función del numero de filas que tuviera el Recordset.
Espero que lo hayas entendido y lo puedas aplicar a tu caso.
Un saludo
- Marcado como respuesta Romssel viernes, 28 de mayo de 2010 15:50
- Desmarcado como respuesta Romssel viernes, 28 de mayo de 2010 15:50
- Marcado como respuesta Romssel viernes, 28 de mayo de 2010 15:52
- Desmarcado como respuesta Romssel viernes, 28 de mayo de 2010 17:01
- Marcado como respuesta Romssel sábado, 29 de mayo de 2010 15:47
-
Hola de nuevo, para que no te muestre el ".00" tienes que hacer lo siguiente:
.Range(Chr(Columna + 3) + CStr(Fila + 1) + ":" + Chr(Columna + 3) + CStr(Fila + 1)).NumberFormat = "General"
En cuanto a lo del símbolo "$" pues en principio parace que lo que pones ahí es correcto, depura el codigo y verifica por que te lo pone 2 veces.
Un saludo
- Marcado como respuesta Romssel sábado, 29 de mayo de 2010 15:47
-
Saludos!!!.............. mira ya lo pude solucionar.... tuve q hacer inventos jajajaja y al final si quedo todo excelente....
Muchisimas gracias compadre y shido por ayudarnos a todos los neofitos en programacion ahhhhhh jajajja ;)
See you!!!
- Marcado como respuesta Romssel sábado, 29 de mayo de 2010 15:47
Todas las respuestas
-
Hola Romssel, para combinar celdas en excel mediante codigo se usa la propiedad Merge del objeto Range, es decir, en tu caso para combinar las celdas A12 y B12 y luego combinar las celdas C12 y D12 tendrías que hacer lo siguiente :
objExcel19.ActiveSheet.Range("A12:B12").Merge objExcel19.ActiveSheet.Range("C12:D12").Merge
Luego si lo que quieres es hacer que ese rango sea variable, deberías hacer lo siguiente:
Dim Columna As Integer Dim Fila As Integer Columna = 65 ' En el codigo Ascii 65 es la letra A, luego Chr(Columna) = "A" Fila = 12 ' Para convertir en texto 12 harías Cstr(Fila) With objExcel19.ActiveSheet .Range(Chr(Columna) + CStr(Fila) + ":" + Chr(Columna + 1) + CStr(Fila)).Merge .Range(Chr(Columna) + CStr(Fila) + ":" + Chr(Columna + 1) + CStr(Fila)).Value = "TOTAL" .Range(Chr(Columna + 2) + CStr(Fila) + ":" + Chr(Columna + 3) + CStr(Fila)).Merge .Range(Chr(Columna + 2) + CStr(Fila) + ":" + Chr(Columna + 3) + CStr(Fila)).Value = txtTotal.Text end With
Ten en cuenta que lo he aplicado a tu caso particular, Range("A12:B12") y Range("C12:D12") y observa tambien que no uso Celdas (Cells), sino rangos (Range) para poderlos combinar (no puedes combinar una sola celda). Columna y Fila podrían tomar los valores que a ti te interesa para cada momento en función del numero de filas que tuviera el Recordset.
Espero que lo hayas entendido y lo puedas aplicar a tu caso.
Un saludo
- Marcado como respuesta Romssel viernes, 28 de mayo de 2010 15:50
- Desmarcado como respuesta Romssel viernes, 28 de mayo de 2010 15:50
- Marcado como respuesta Romssel viernes, 28 de mayo de 2010 15:52
- Desmarcado como respuesta Romssel viernes, 28 de mayo de 2010 17:01
- Marcado como respuesta Romssel sábado, 29 de mayo de 2010 15:47
-
Oye disculpa........ sabes q se me olvido preguntarte???... mira... has de cuenta q el resultado por ejemplo de una venta es este....
"ALEPH" Computadoras Juan Alejandro Morales Avila C. 21. de Marzo #205B, Col. Centro C.P. 99000 Tel. 9837798, Cel. 4939467528 28/05/2010 12:02:35 p.m. ARTICULO CTD PRECIO TOTAL Diadema Auricular c/Microfono 981-000043 1 290.00 290.00 FAX-MODEM 56600 Interno sin Voz 1 91.29 91.29 Gab. Media Torre Mod. G10G / G10J Negro 1 583.22 583.22 HDD 80 Gb Serial 7200 rpm 1 704.94 704.94 REGULADOR VOLTAJE LAPTOP 1 490.00 490.00 SM-803A 1 350.00 350.00 Tarjeta de Red PCI 10/100 RJ45 1 150.00 150.00 TOTAL : 2,659.45 Número de Artículos: 8.00 REVISE SU MERCANCIA Y CAMBIO DESPUES NO SE ACEPTAN RECLAMACIONES ¡¡¡ GRACIAS POR SU PREFERENCIA !!! Como le puedo hacer para q el total me aparezca en pesos y q en numero de articulos me quite los decimales, pq dejame decirte q las columna 3 la tengo q me la ponga con 2 decimales y pues cunado me saca el numero de articulos no quiero q me aparezca el ".00" y otra es q en el TOTAL me aparezca el simbolo de $, pq por ejemplo lo declare en el codigo asi:
.Range(Chr(Columna + 3) + CStr(Fila + 1) + ":" + Chr(Columna + 3) + CStr(Fila + 1)).Value = "$" + txtTotal.Text
y has de cuenta q cuando hago el traslado me pone doble $$ y la cantidad...... y si le quito el "$", no me pone absolutamente nada mas q la pura cantidad, entonces como le puedo hacer ahi???
Gracias!!!!
-
Hola de nuevo, para que no te muestre el ".00" tienes que hacer lo siguiente:
.Range(Chr(Columna + 3) + CStr(Fila + 1) + ":" + Chr(Columna + 3) + CStr(Fila + 1)).NumberFormat = "General"
En cuanto a lo del símbolo "$" pues en principio parace que lo que pones ahí es correcto, depura el codigo y verifica por que te lo pone 2 veces.
Un saludo
- Marcado como respuesta Romssel sábado, 29 de mayo de 2010 15:47
-
Saludos!!!.............. mira ya lo pude solucionar.... tuve q hacer inventos jajajaja y al final si quedo todo excelente....
Muchisimas gracias compadre y shido por ayudarnos a todos los neofitos en programacion ahhhhhh jajajja ;)
See you!!!
- Marcado como respuesta Romssel sábado, 29 de mayo de 2010 15:47