Adicionar Columnas

12/11/2009 - 19:13 por jforero | Informe spam
Buenas tardes grupo, deseo realizar los siguiente:

en la hoja Formulario en la celda:
e16 tengo el numero de cotizacion
c20 la fecha
b22 la nota y/o observaciones

en la hoja Cotizaciones en la:

Columna E tengo el numero de cotizacion
Columna K el ultimo dato almacenado

entonces lo que necesito si es posible es que al darle click al boton
btnActualizar (insertado en la hoja formulario) con el numero de cotizacion
de la hoja formulario, me adicione la columna L con la fecha almacenada en
la hoja formulario celda c20 y en la columna M las observaciones.

si se realiza esta operacion para el mismo numero de cotizacion, me adicione
las columnas N y O respectivamente y asi sucesivamente.
y de ser posible que me titule las columnas insertadas:

La de la fecha: "Fecha " n ,donde n sera 1 para la primera observacion y 2
para la segunda (en negrilla y centrado)
la de la observacion con "Notas y observaciones " n, donde n sera 1 para la
primera observacion y 2 para la segunda (en negrilla y centrado)
y asi sucesivamente

gracias por la colaboración

Jorge f

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/11/2009 - 00:16 | Informe spam
hola, jorge !

prueba asignando al boton que tienes incrustado en "formulario" una macro +/- como la siguiente:
(OJO: no contempla la prevencion/correccion/... de -posibles- errores)

Sub Anotaciones()
Dim Fila As Integer, Col As Byte, uCol As Byte
With Worksheets("cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row
Col = Application.Max(12, .Range("iv" & Fila).End(xlToLeft).Column + 1)
uCol = 12: On Error Resume Next
uCol = .Cells.Find("*", .[a1], xlValues, xlWhole, xlByColumns, xlPrevious).EntireColumn
.Cells(Fila, Col) = [c20]
.Cells(Fila, Col + 1) = [b22]
With .Range("l1:m1")
Select Case Col
Case Is <= uCol
.Value = Array("Fecha 1", "Observaciones 1")
.Font.Bold = True: .HorizontalAlignment = xlHAlignCenter
Case Is > uCol
.AutoFill .Resize(, Col - 10)
End Select
End With
End With
End Sub

saludos,
hector.

__ OP __
en la hoja Formulario en la celda:
e16 tengo el numero de cotizacion
c20 la fecha
b22 la nota y/o observaciones

en la hoja Cotizaciones en la:
Columna E tengo el numero de cotizacion
Columna K el ultimo dato almacenado

entonces lo que necesito si es posible es que al darle click al boton... (insertado en la hoja formulario)
con el numero de cotizacion de la hoja formulario
me adicione la columna L con la fecha almacenada en la hoja formulario celda c20 y en la columna M las observaciones.

si se realiza esta operacion para el mismo numero de cotizacion, me adicione las columnas N y O respectivamente y asi sucesivamente.
y de ser posible que me titule las columnas insertadas:
La de la fecha: "Fecha " n ,donde n sera 1 para la primera observacion y 2 para la segunda (en negrilla y centrado)
la de la observacion con "Notas y observaciones " n, donde n sera 1 para la primera observacion y 2 para la segunda (en negrilla y centrado)
y asi sucesivamente
Respuesta Responder a este mensaje
#2 jforero
17/11/2009 - 14:36 | Informe spam
Hola Hector.. he implementado el código pero me sale el siguiente error

Se ha producido el error "91" en tiempo de ejecucion
variable de objeto o bloque with no establecido.

y la interrupcion es en la línea

Fila = .Columns("a").Cells.Find([e16], .[a1]).Row

Hector como siempre gracias por tu colaboracion

Jorgef


"Héctor Miguel" escribió en el mensaje de
noticias news:%23$wOk4%
hola, jorge !

prueba asignando al boton que tienes incrustado en "formulario" una macro
+/- como la siguiente:
(OJO: no contempla la prevencion/correccion/... de -posibles- errores)

Sub Anotaciones()
Dim Fila As Integer, Col As Byte, uCol As Byte
With Worksheets("cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row
Col = Application.Max(12, .Range("iv" & Fila).End(xlToLeft).Column + 1)
uCol = 12: On Error Resume Next
uCol = .Cells.Find("*", .[a1], xlValues, xlWhole, xlByColumns,
xlPrevious).EntireColumn
.Cells(Fila, Col) = [c20]
.Cells(Fila, Col + 1) = [b22]
With .Range("l1:m1")
Select Case Col
Case Is <= uCol
.Value = Array("Fecha 1", "Observaciones 1")
.Font.Bold = True: .HorizontalAlignment = xlHAlignCenter
Case Is > uCol
.AutoFill .Resize(, Col - 10)
End Select
End With
End With
End Sub

saludos,
hector.

__ OP __
en la hoja Formulario en la celda:
e16 tengo el numero de cotizacion
c20 la fecha
b22 la nota y/o observaciones

en la hoja Cotizaciones en la:
Columna E tengo el numero de cotizacion
Columna K el ultimo dato almacenado

entonces lo que necesito si es posible es que al darle click al boton...
(insertado en la hoja formulario)
con el numero de cotizacion de la hoja formulario
me adicione la columna L con la fecha almacenada en la hoja formulario
celda c20 y en la columna M las observaciones.

si se realiza esta operacion para el mismo numero de cotizacion, me
adicione las columnas N y O respectivamente y asi sucesivamente.
y de ser posible que me titule las columnas insertadas:
La de la fecha: "Fecha " n ,donde n sera 1 para la primera observacion y
2 para la segunda (en negrilla y centrado)
la de la observacion con "Notas y observaciones " n, donde n sera 1 para
la primera observacion y 2 para la segunda (en negrilla y centrado)
y asi sucesivamente




Respuesta Responder a este mensaje
#3 Héctor Miguel
18/11/2009 - 06:20 | Informe spam
hola, jrge !

... he implementado el codigo pero me sale el siguiente error
Se ha producido el error "91" en tiempo de ejecucion
variable de objeto o bloque with no establecido.
y la interrupcion es en la linea
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row



1) la linea que causa el error, esta "intimamente" ligada con la linea anterior de la propuesta de macro...
With Worksheets("cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row





2) podrias comentar como has hecho la "implementacion" del codigo y/o cualquier "adaptacion" al mismo ?
modulo, tipo de procedimiento, esta asignado a algun objeto ? (de que tipo ?), ???

saludos,
hector.

__ OP __
prueba asignando al boton que tienes incrustado en "formulario" una macro +/- como la siguiente:
(OJO: no contempla la prevencion/correccion/... de -posibles- errores)

Sub Anotaciones()
Dim Fila As Integer, Col As Byte, uCol As Byte
With Worksheets("cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row
Col = Application.Max(12, .Range("iv" & Fila).End(xlToLeft).Column + 1)
uCol = 12: On Error Resume Next
uCol = .Cells.Find("*", .[a1], xlValues, xlWhole, xlByColumns, xlPrevious).EntireColumn
.Cells(Fila, Col) = [c20]
.Cells(Fila, Col + 1) = [b22]
With .Range("l1:m1")
Select Case Col
Case Is <= uCol
.Value = Array("Fecha 1", "Observaciones 1")
.Font.Bold = True: .HorizontalAlignment = xlHAlignCenter
Case Is > uCol
.AutoFill .Resize(, Col - 10)
End Select
End With
End With
End Sub
Respuesta Responder a este mensaje
#4 jforero
19/11/2009 - 15:59 | Informe spam
Hola Hector.

El código es el siguiente, en la hoja de cálculo tengo un option button por
eso el if, ya verifiqué que el nombre de la hoja de cálculo esté bien
escrito.

Gracias por tu colaboración

Jorgef

Private Sub btnActualizar_Click()
'Desproteje hojas
Worksheets("Cotizaciones").Unprotect ("sure")

If opbCotizaciones.Value = True Then
Dim Fila As Integer, Col As Byte, uCol As Byte
With Worksheets("Cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row
Col = Application.Max(17, .Range("iv" & Fila).End(xlToLeft).Column +
1)
uCol = 17: On Error Resume Next
uCol = .Cells.Find("*", .[a1], xlValues, xlWhole, xlByColumns,
xlPrevious).EntireColumn
.Cells(Fila, Col) = [c20]
.Cells(Fila, Col + 1) = [b22]
With .Range("r1:s1")
Select Case Col
Case Is <= uCol
.Value = Array("Fecha 1", "Observaciones 1")
.Font.Bold = True: .HorizontalAlignment = xlHAlignCenter
Case Is > uCol
.AutoFill .Resize(, Col - 10)
End Select
End With
End With


MsgBox ("Las Observaciones han Sido Actualizadas")
Else: MsgBox ("Debe Elegir Cotizaciones o Visitas")
End If
'salva los datos
ActiveWorkbook.Save
Worksheets("Cotizaciones").Protect Password:="sure",
DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


"Héctor Miguel" escribió en el mensaje de
noticias news:%
hola, jrge !

... he implementado el codigo pero me sale el siguiente error
Se ha producido el error "91" en tiempo de ejecucion
variable de objeto o bloque with no establecido.
y la interrupcion es en la linea
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row



1) la linea que causa el error, esta "intimamente" ligada con la linea
anterior de la propuesta de macro...
With Worksheets("cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row





2) podrias comentar como has hecho la "implementacion" del codigo y/o
cualquier "adaptacion" al mismo ?
modulo, tipo de procedimiento, esta asignado a algun objeto ? (de que
tipo ?), ???

saludos,
hector.

__ OP __
prueba asignando al boton que tienes incrustado en "formulario" una
macro +/- como la siguiente:
(OJO: no contempla la prevencion/correccion/... de -posibles- errores)

Sub Anotaciones()
Dim Fila As Integer, Col As Byte, uCol As Byte
With Worksheets("cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row
Col = Application.Max(12, .Range("iv" & Fila).End(xlToLeft).Column +
1)
uCol = 12: On Error Resume Next
uCol = .Cells.Find("*", .[a1], xlValues, xlWhole, xlByColumns,
xlPrevious).EntireColumn
.Cells(Fila, Col) = [c20]
.Cells(Fila, Col + 1) = [b22]
With .Range("l1:m1")
Select Case Col
Case Is <= uCol
.Value = Array("Fecha 1", "Observaciones 1")
.Font.Bold = True: .HorizontalAlignment = xlHAlignCenter
Case Is > uCol
.AutoFill .Resize(, Col - 10)
End Select
End With
End With
End Sub






Respuesta Responder a este mensaje
#5 Héctor Miguel
19/11/2009 - 19:30 | Informe spam
hola, jorge !

El codigo es el siguiente, en la hoja de calculo tengo un option button por eso el if
ya verifique que el nombre de la hoja de calculo este bien escrito...



1) solo por si las dudas, comprueba/corrige que en las propiedades del btnActualizar (en el editor de vba)
la propiedad "TakeFocusOnClick" este establecida como => False

2) solo como comentario... el rango para los encabezamientos de las notas (R1:S1)
inicia en la columna 18 (y en tu codigo estas iniciando como columna 17) -???-

(por lo demas y despues de probarlo, no encuentro otras posibles causas del error que comentas)

saludos,
hector.

__ el codigo expuesto __
Private Sub btnActualizar_Click()
'Desproteje hojas
Worksheets("Cotizaciones").Unprotect ("sure")
If opbCotizaciones.Value = True Then
Dim Fila As Integer, Col As Byte, uCol As Byte
With Worksheets("Cotizaciones")
Fila = .Columns("a").Cells.Find([e16], .[a1]).Row
Col = Application.Max(17, .Range("iv" & Fila).End(xlToLeft).Column + 1)
uCol = 17: On Error Resume Next
uCol = .Cells.Find("*", .[a1], xlValues, xlWhole, xlByColumns, xlPrevious).EntireColumn
.Cells(Fila, Col) = [c20]
.Cells(Fila, Col + 1) = [b22]
With .Range("r1:s1")
Select Case Col
Case Is <= uCol
.Value = Array("Fecha 1", "Observaciones 1")
.Font.Bold = True: .HorizontalAlignment = xlHAlignCenter
Case Is > uCol
.AutoFill .Resize(, Col - 10)
End Select
End With
End With
MsgBox ("Las Observaciones han Sido Actualizadas")
Else: MsgBox ("Debe Elegir Cotizaciones o Visitas")
End If
'salva los datos
ActiveWorkbook.Save
Worksheets("Cotizaciones").Protect Password:="sure", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida