ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Moving down one cell (https://www.excelbanter.com/excel-programming/330351-re-moving-down-one-cell.html)

Jim Thomlinson[_4_]

Moving down one cell
 
Here is what I use. It converts the entire selected range (to a maximum of
the used range). I keep this in an addin which is accessed via a menu bar.

Private Const m_MaxYear As Integer = 2099
Private Const m_MinYear As Integer = 1970

Private Sub Convert()
On Error GoTo ErrorHandler
Dim rngCurrent As Range
Dim rngToSearch As Range

Set rngToSearch = Intersect(ActiveSheet.UsedRange, Selection)
If Not rngToSearch Is Nothing Then
Application.Calculation = xlCalculationManual
For Each rngCurrent In rngToSearch
If Left(rngCurrent.Value, 1) < "=" Then
If Len(rngCurrent) = 8 And ValidMonth(rngCurrent) And
ValidYear(rngCurrent) Then
rngCurrent.NumberFormat = "mm/dd/yy"
rngCurrent.Value = CDate(rngCurrent.Value)
End If

End If
Next

End If

ErrorHandler:
Application.Calculation = xlCalculationAutomatic
End Sub

Private Function ValidMonth(ByVal rngCurrent As Range) As Boolean
Dim blnReturnValue As Boolean

blnReturnValue = False
Select Case UCase(Left(rngCurrent.Value, 3))
Case "JAN"
blnReturnValue = True
Case "FEB"
blnReturnValue = True
Case "MAR"
blnReturnValue = True
Case "APR"
blnReturnValue = True
Case "MAY"
blnReturnValue = True
Case "JUN"
blnReturnValue = True
Case "JUL"
blnReturnValue = True
Case "AUG"
blnReturnValue = True
Case "SEP"
blnReturnValue = True
Case "OCT"
blnReturnValue = True
Case "NOV"
blnReturnValue = True
Case "DEC"
blnReturnValue = True
End Select

ValidMonth = blnReturnValue

End Function

Private Function ValidYear(ByVal rngCurrent As Range) As Boolean
Dim blnReturnValue As Boolean
Dim intYear As Integer

If IsNumeric(Right(rngCurrent.Value, 4)) Then
intYear = CInt(Right(rngCurrent.Value, 4))
If intYear m_MinYear And intYear < m_MaxYear Then
blnReturnValue = True
Else
blnReturnValue = False
End If
Else
blnReturnValue = False
End If

ValidYear = blnReturnValue

End Function
--
HTH...

Jim Thomlinson


"Jordan" wrote:

I have a date listed as APR 2005 or Mar 2005. If I format the column as a
date it doesnt change until I press F2 and hit enter and then it shows as
04/01/2005 or 03/01/2005. Which is what I want.

Can anyone tell me how what code to use to tell it to press F2, hit enter
and then move down one cell until it reaches a blank cell.

Or is there a way to re-calculate all the cells without having to open them?

Thanks in advance for any help you can give me.



All times are GMT +1. The time now is 02:46 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com