UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

CARLOS CARNERO


En referencia al título del presente topic, el archivo muestra y código descrito en http://www.universoexcelforo.com/t1270-macro-para-convertir-en-numero-solo-en-una-columna , lo que deseo es cuando la macro copie entre el rango AI33:AI47 del “Formulario_pantalla” (se encuentra una condicional que muestra si un documento se encuentra o no disponible), cuando indique en el segundo caso se pueda impedir ejecutar esta macro del botón “SOLICITAR” y que aparezca un mensaje sobre lo mismo,   “No disponible, intente solo con los disponibles”.
 
Gracias y saludos desde el Perú,
 
Carlos

Igtelo


Hola Carlos.

Aquí te va.
Te dejo estos 3 enlaces para que los "leas, veas y estudies", es lo que utilicé para lo que quieres.
En aportes de los usuarios y tutoriales tienen mucho material.

Comentario: No le encuentro sentido al mensaje si ya lo tienes en el formulario...

http://www.universoexcelforo.com/t1181-como-trabaja-una-macro-y-la-hoja-de-calculo-simultaneamente-videotutorial

http://www.universoexcelforo.com/t190-msgbox-cuadro-de-mensaje-aporte

http://www.universoexcelforo.com/t1166-como-utilizar-la-ayuda-de-vba-tutorial
Archivos
Carlos Carnero.xls
No tienes los permisos para descargar los archivos.
(207 KB)

CARLOS CARNERO


Estimado Igtelo, una vez más estupenda solución. Voy a leer lo que me recomiendas porque quiero aprender esta valiosa herramienta de programación VBA.

Un detalle que se me ha presentado y es que como este archivo es la muestra del principal con identica estructura, por alguna razón cuando traslado a este último no lo ejecuta como en el ejemplo. Estoy analizando en donde yo me estoy equivocando pero no lo hallo.

Reiterando mi agradecimiento y saludos desde el Perú,

Carlos Carnero Gálvez

Igtelo


Que tal Carlos.

Tal vez en tu original no trabaje porque hay que quitar la combinación de celdas del rango en AI. Find no trabaja con celdas combinadas.

Ve el video, el paso a paso nos muestra instrucción por instrucción el desarrollo de la macro.

Espero sea por acá y ya te quede.

Suerte

CARLOS CARNERO


Perfecto mi estimado Igtelo, quedó conforme.

Se agradece una vez más tu gentileza!!! Very Happy Very Happy Very Happy

CARLOS CARNERO


Estimado Igtelo: perdona que sea bastante cargoso, me apena molestarte; pero como te comente el archivo presentado es una fracción del principal. Si bien quedo estupendo para el ejemplo, pero veo que se complico en otra que ya lo tenía solucionado, en el cual tiene un botón de agregar o eliminar registros (en el ejemplo mencionado en este topic no lo incluí, a razón que lo descarte por lo antes descrito) es decir ahora me sale el siguiente mensaje:  "Error de compilación: No se ha definidio Sub o Fuction" y sombrea en fondo amarillo a la linea "Private Function Mayusc() As Boolean
  Mayusc = (MonitorDeTeclas"

El código inicial era este:



Option Explicit
 
Private Declare PtrSafe Function MonitorDeTeclas _
Lib "User32" Alias "GetAsyncKeyState" _
  (ByVal Tecla As Long) As Integer
Private Function Mayusc() As Boolean
  Mayusc = (MonitorDeTeclas(vbKeyShift) And &H8000)
End Function
Sub Agregar_eliminar()
  Application.ScreenUpdating = False
  If TypeName(Selection) <> "Range" Then Exit Sub
  If Mayusc Then Selection.EntireRow.Delete: Exit Sub
  Selection.EntireRow.Insert
  Selection.Offset(-1).Resize(1).EntireRow.Copy _
    Cells(Selection.Row, 1).Resize(Selection.Rows.Count)
  Cells(Selection.Row, 2).Resize(Selection.Rows.Count, 5).ClearContents
  ActiveSheet.Protect Password:="1234", UserInterfaceOnly:=True
  ActiveSheet.EnableAutoFilter = True
End Sub

El código que lo mejorastes es:



Option Explicit
 
'Private Declare PtrSafe Function MonitorDeTeclas
'Lib "User32" Alias "GetAsyncKeyState" _
  '(ByVal Tecla As Long) As Integer
Private Function Mayusc() As Boolean
  Mayusc = (MonitorDeTeclas(vbKeyShift) And &H8000)
End Function
Sub Agregar_eliminar_registro()
'[-------Ini
    Dim QuotationMarks As String
    Dim Variable As Long
'-----------------------]
 
  Application.ScreenUpdating = False
  If TypeName(Selection) <> "Range" Then Exit Sub
  If Mayusc Then Selection.EntireRow.Delete: Exit Sub
  Selection.EntireRow.Insert
  Selection.Offset(-1).Resize(1).EntireRow.Copy _
    Cells(Selection.Row, 1).Resize(Selection.Rows.Count)
  Cells(Selection.Row, 2).Resize(Selection.Rows.Count, 12).ClearContents
 
'[-------
    QuotationMarks = Chr(34) & Chr(34)
    Range("T2").Formula = "=if(Y2<>" & QuotationMarks & ", 1, 0)"
    ActiveCell.Offset(1, 0).Select
    Variable = ActiveCell.Row
    Range("T" & Variable).Formula = "=if(Y" & Variable & "<> " & QuotationMarks & ", T" & Variable - 1 & "+1" & ",T" & Variable - 1 & ")"
    ActiveCell.Offset(-1, 0).Select
'----------------------------------]
 
  ActiveSheet.Protect Password:="1234", UserInterfaceOnly:=True
  ActiveSheet.EnableAutoFilter = True
End Sub


Embarassed Embarassed Embarassed Mil disculpas por la incomodidad que posiblemente te causo,

Gracias

Igtelo


Hola Carlos.

Estos códigos para nada los toqué, sólo el del botón de solicitar.
Corre tu macro paso a paso y vas viendo en tu hoja lo que va haciendo.

En cuanto te salga el error dale click en la ayuda y te va a decir la causa y solución.

CARLOS CARNERO


En efecto este código pertenece a otra fracción del archivo, así que preferí optar por la opción inicial.

Te agradezco sinceramento Igtelo por tus atenciones.

Saludos,

Carlos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.