Macro para convertir número a texto fecha

Aretradeser

Board Regular
Joined
Jan 16, 2013
Messages
176
Office Version
  1. 2013
Platform
  1. Windows
Necesito una macro para que cuando introduzaca un numero en la celdas A1 y A2, me devuelva el mes, en texto, correspondiente a ese número.
Ejemplo: 1 devuelva Enero; 2 devuelva Febrero; 3 devuelva Marzo...12 devuelva Diciembre.
Gracias,
Saludos
 
el código anterior (entre el "Private..." y el "End Sub") puedes agregarlo al final del código propuesto (entre el "End Select" y el "End Sub")

solo considera los siguientes cambios:

1) tu línea de: => If Range("A2") = "" Or Range("A2") = 0 Then
la cambias a: => If Range("A2") = "" Then

2) todas las referencias a los rangos "A1" y "A2" (del tipo: Range("A1")
las cambias por referencias al mes de esas celdas: p.e.
Month(Range("A1"))

por lo demás, si tienes alguna duda (o información adicional)... comentas ?
saludos,
hector.
 
Upvote 0

Excel Facts

Can Excel fill bagel flavors?
You can teach Excel a new custom list. Type the list in cells, File, Options, Advanced, Edit Custom Lists, Import, OK
Uniendo el código, según tus indicaciones, me da el siguiente error en la línea que te marco:
CÓDIGO
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$A$1", "$A$2"
Application.EnableEvents = False
Target = DateSerial(Year(Date), Day(CDate(Target) + 1), 1)
Application.EnableEvents = True
End Select
Select Case Target.Address
Case "$A$1", "$A$2"
Application.EnableEvents = False
Target = DateSerial(Year(Date), Day(CDate(Target) + 1), 1)
Application.EnableEvents = True
End Select
If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
For I = 3 To Range("A" & Rows.Count).End(xlUp).Row
If Range("A2") = "" Then
ki = 2
kf = Month(Range("A1"))
Else
If Range("A2") < Month(Range("A1")) Then Exit Sub


ki = (Month(Range("A1")) * 3) - 1
kf = Range("A2") - Month(Range("A1")) + 1
End If
z1 = 0: z2 = 0: z3 = 0
co = 0
For j = 1 To kf
z1 = z1 + Cells(I, ki) >>>error
z2 = z2 + Cells(I, ki + 1)
z3 = z3 + Cells(I, ki + 2)
ki = ki + 3
co = co + 1
Next
Cells(I, "AL") = z1 / co
Cells(I, "AM") = z2 / co
Cells(I, "AN") = z3 / co
Next
End If
End Sub
Saludos.
 
Upvote 0
antes de continuar...

1) ya notaste que has duplicado las instrucciones del "Select Case Target.Address" (???)

2) al parecer, no leíste (o entendiste) completamente este punto de la sugerencia en el mensaje anterior...
2) todas las referencias a los rangos "A1" y "A2" (del tipo: Range("A1")
las cambias por referencias al mes de esas celdas: p.e.
Month(Range("A1"))

en tu nueva exposición, SOLO a las referencias al rango [A1] les has agregado la función Month(...) pero NO a las referencias al rango [A2] ???

podrías analizar (de nuevo) las sugerencias ofrecidas ?
si no te son claras, te ofrezco postear el código arreglado (con base a estas mismas sugerencias) para tus pruebas

saludos,
hector.

p.d. no lo tomes a mal, pero siempre he considerado (preferentemente) "enseñar a pescar"... que "dar un pescado" :D
 
Upvote 0
Efectivamente, no me di cuenta, Ya he realizado las modificaciones que me habías indicado y funciona perfectamente.
Muchas gracias, Héctor Miguel, podemos dar por cerrada esta consulta, resuelta a plena satisfacción.
 
Upvote 0
Bom dia Aretradeser

Infelizmente, apenas agora vi seu tópico(sou novo membro no forum)

Pois bem, penso que poderia fazer da seguinte maneira:

Você tem a coluna A e utiliza A1 e A2.
Em A1, o título é "MES(NUMERO)"
Em A2, o título é "MES(TEXTO)

Inserir a formula em A2
=IFERROR(CHOOSE($A$2;"January";"February";"March";"Abril";"May";"June";"July";"August";"September";"October";"November";"December");"NOT FOUND")
Ao inserir valores entre 1 e 12, ele busca na formula o mês correspondente.
Caso esteja fora da faixa, retorna "NOT FOUND"

Para tal, esconda a formula em A2 para que não possa ser vista.Com isso, você evitar problemas e utiliza macro(VBA) somente onde for necessário.



Espero ter ajudado.
 
Upvote 0

Forum statistics

Threads
1,223,948
Messages
6,175,568
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top