Mensaje de confirmación de un proceso

20/05/2008 - 17:40 por CARLOS CARNERO | Informe spam
Muy buenas a todos los foristas y en especial a Héctor Miguel a quien
me dirijo:

Te agradecería en base a la sintaxis del ejemplo a mi consulta
anterior, que antes de realizar el proceso de copiar y pegar
determinadas celdas, me apareciera un mensaje, en la que confirme ó
deniegue el proceso de la siguiente sintaxis:

Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c17:c31"))
If Consultas = 0 Then Exit Sub
With Worksheets("KARDEX").Range("a65536").End(xlUp).Offset(1, 5)
.Resize(Consultas).Value = Range("c17").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("D1").Value, Range("J8").Value, Range("F1").Value,
Range("G1").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c17").Resize(Consultas).ClearContents
Range("D1,F1,G1,I1").ClearContents
End Sub


Saludos,

Carlos Carnero Gálvez

Preguntas similare

Leer las respuestas

#6 CARLOS CARNERO
22/05/2008 - 22:30 | Informe spam
Hector otro favor relacionado con lo mismo. Que al insertar una
columna ("D") y el rango que leía anteriormente esta sintaxis era del
C17:C31, he querido corregir la sintaxis para que ahora me reconozca
del C17:D31, pero sólo consigo que limpie la hoja "Formulario", pero
no copia los datos de la nueva columna "D".

Esta es la sintaxis que he estado corrigiendo:

Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c17"))
If Consultas = 0 Then Exit Sub
If MsgBox("¿Desea guardar los cambios?", vbYesNo, "Confirmación") vbNo _
Then Exit Sub
With Worksheets("KARDEX").Range("a65536").End(xlUp).Offset(1, 5)
.Resize(Consultas).Value = Range("c17").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("D1").Value, Range("K8").Value, Range("E1").Value,
Range("G1").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c17:d31").Resize(Consultas).ClearContents
Range("D1,E1,G1,I1").ClearContents
End Sub

Saludos,

Carlos
Respuesta Responder a este mensaje
#7 CARLOS CARNERO
23/05/2008 - 16:24 | Informe spam
Por favor donde corrijo la sintaxis para que copie el nuevo rango
"c17:d31".

Saludos,

Carlos
Respuesta Responder a este mensaje
#8 Héctor Miguel
24/05/2008 - 02:04 | Informe spam
hola, Carlos !

.. otro favor relacionado con lo mismo. Que al insertar una columna ("D")
y el rango que leía anteriormente esta sintaxis era del C17:C31
he querido corregir la sintaxis para que ahora me reconozca del C17:D31
pero solo consigo que limpie la hoja "Formulario", pero no copia los datos de la nueva columna "D".



(hasta donde se)... cuando "las condiciones cambian"... las soluciones tambien se deben "adaptar al cambio" :D

- originalmente hablabas de la hoja "registros"
(ahora es "kardex" y SI corriste la adaptacion necesaria)

- en tu primer consulta se debian rescatar datos capturados en un rango de DOS columnas (B1:C15)
(despues has estado cambiando -p.e.- a C17:C31, y ahora pretendes "regresar" a DOS columnas -C17:D31 ???-)
(y al parecer, es en este "trance" donde te sientes "perdido") -?-

- si YA NO es necesario "contar" mas de una celda en algun rango donde se capturan datos (ahora es solamente C17 ???)
a) no tiene sentido la instruccion: -> Consultas = Application.CountA(Range("c17"))
b) tampoco tiene sentido una variable (Consultas) para "controlar" una sola celda (C17 ?)
c) tampoco resulta funcional el uso de instrucciones: -> .Resize(Consultas)

- para poder hacer una propuesta "decorosa" necesitas expones "las nuevas condiciones" (de preferencia, +/- exactamente)

saludos,
hector.

__ el codigo expuesto __
Esta es la sintaxis que he estado corrigiendo:

Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c17"))
If Consultas = 0 Then Exit Sub
If MsgBox("Desea guardar los cambios?", vbYesNo, "Confirmacion") = vbNo Then Exit Sub
With Worksheets("KARDEX").Range("a65536").End(xlUp).Offset(1, 5)
.Resize(Consultas).Value = Range("c17").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("D1").Value, Range("K8").Value, Range("E1").Value, Range("G1").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c17:d31").Resize(Consultas).ClearContents
Range("D1,E1,G1,I1").ClearContents
End Sub
Respuesta Responder a este mensaje
#9 CARLOS CARNERO
27/05/2008 - 22:05 | Informe spam
Hola Héctor y siempre agradeciendo tu deferencia. Bueno analizando tu
respuesta tienes razón que cambie más de una vez las propuestas, dado
a que en un primer momento quize realizarlo en un archivo pequeño y
luego trasladarlo al archivo principal o real. En definitiva encontre
la primera sintaxis y reacomodandola es la siguiente (la parte que me
faltaba:Resize(Consultas, 2) ):



Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c17:c31"))
If Consultas = 0 Then Exit Sub
If MsgBox("¿Desea guardar los cambios?", vbYesNo, "Confirmación") vbNo _
Then Exit Sub
With Worksheets("KARDEX").Range("a65536").End(xlUp).Offset(1, 5)
.Resize(Consultas, 2).Value Range("c17:d17").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("D1").Value, Range("K8").Value, Range("E1").Value,
Range("G1").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c17:d31").Resize(Consultas).ClearContents
Range("D1,E1,G1,I1").ClearContents
End Sub


Muchas gracias una vez más Héctor.

Carlos
Respuesta Responder a este mensaje
#10 CARLOS CARNERO
03/06/2008 - 22:32 | Informe spam
Hector: Estoy ahora tratando de mover esta hoja "Formulario" a un
nuevo libro, pero estoy tratanto de reacomodar la sintaxis para que
tenga efecto en la hoja "Kardex" del libro original. ¿Es posible
reacomodar esta sintaxis? me refiero a esta parte: With
Worksheets("KARDEX").

Saludos,

Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida