Actualizar valor de una celda despues de ingresar

14/11/2008 - 19:18 por crx73 | Informe spam
Hola,

Tengo una tabla donde estoy capturando movimiento de una cuenta, hay
una columna destinado a la hora y aqui tengo una duda, deseo ingresar
la fecha en el formato militar, es decir, algo así como 115448, pero
que al cambiar de celda, de forma automáticamente este cambie a
11:54:48 AM

Es posible lograr esto con alguna macro?

De antemano, muchas gracias por su ayuda.


Claudio C.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/11/2008 - 02:50 | Informe spam
hola, Claudio !

Tengo una tabla donde estoy capturando movimiento de una cuenta
hay una columna destinado a la hora y aqui tengo una duda
deseo ingresar la fecha en el formato militar, es decir
algo asi como 115448, pero que al cambiar de celda
de forma automatica este cambie a 11:54:48 AM
Es posible lograr esto con alguna macro?



si suponemos que este tipo de entrada lo necesitas para el rango [A2:A15]
(o modifica como mejor te convenga)...
copia/pega (o escribe) lo siguiente en el modulo de codigo de "esa" hoja...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2:a15")) Is Nothing Then ActiveCell.Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("a2:a15")) Is Nothing Then Exit Sub
If Target = 0 Then Exit Sub
Application.EnableEvents = False
Target = Evaluate("text(" & Target.Address & ",""00\:00\:00"")")
Application.EnableEvents = True
End Sub

=> toma nota que deberas ingresar 8 digitos (hhmmss)

saludos,
hector.
Respuesta Responder a este mensaje
#2 Ivan
15/11/2008 - 03:55 | Informe spam
hola chicos,


una columna destinado a la hora y aqui tengo una duda, deseo ingresar
la fecha en el formato militar, es decir, algo así como 115448, pero
que al cambiar de celda, de forma automáticamente este cambie a
11:54:48 AM

Es posible lograr esto con alguna macro?



otra posibilidad (retorcidilla ella :-D) podria ser algo asi =>

en un modulo normal =>

Public Sub formatoHora(ByRef pRng As Range)
If Not IsNumeric(pRng.Value) Then Exit Sub
Dim hora As String, minuto As String, _
segundo As String, valor As String
hora = "00": minuto = "00": segundo = "00"
With pRng
Application.EnableEvents = False
.ClearFormats
Select Case Len(.Text)
Case 6: hora = Left(.Text, 2)
minuto = Mid(.Text, 3, 2)
segundo = Right(.Text, 2)
Case 5: hora = "0" & Left(.Text, 1)
minuto = Mid(.Text, 2, 2)
segundo = Right(.Text, 2)
Case 4: hora = Left(.Text, 2)
minuto = Right(.Text, 2)
Case 3: hora = "0" & Left(.Text, 1)
minuto = Right(.Text, 2)
Case 2: hora = .Text
Case 1: hora = "0" & .Text
Case Else
End Select
valor = hora & ":" & minuto & ":" & segundo
If Val(hora) > 23 Or Val(minuto) > 59 Or _
Val(segundo) > 59 Then
valor = "00:00:00": pRng.Select
MsgBox "El valor no es una hora valida"
End If
.Value = valor
.NumberFormat = "hh:mm:ss AM/PM"
Application.EnableEvents = True
End With
End Sub

en el modulo de la hoja =>

' OJO: el ejemplo seria para los digitos introducidos en la columna 2,
y admite de uno a 6 digitos [aunque hay que reconocer que la decision/
interpretacion de los mismos es un 'pelin' arbitraria :-))]

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If Not IsNumeric(Target) Then Exit Sub
formatoHora Target
End If
End Sub

bueno, solo como entretenimiento ;-p

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Ivan
15/11/2008 - 04:09 | Informe spam
hola de nuevo,

aunque no evitaria lo 'cutre', cambiando las lineas entre el 'End
Select' y el 'End With' por estas otras al menos quedaria un poco mas
claro =>

valor = hora & ":" & minuto & ":" & segundo
If Val(hora) > 23 Or Val(minuto) > 59 Or _
Val(segundo) > 59 Then
valor = "": pRng.Select
MsgBox "El valor no es una hora valida"
End If
.Value = valor
NumberFormat = "hh:mm:ss AM/PM"
Application.EnableEvents = True
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida