Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
How can I reduce the types of cells?
I have tried, to no avail, to delete some Custom Cells in the Formatting section. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Agotro,
Try the following code from Leo Heuser. To delete unused formats, answer 'yes' to the imitial message box; answering 'no' will retain all exising formats but will produce a report listing: '============================= Sub DeleteUnusedCustomNumberFormats() , May 6. 2001 'Version 1.01 Dim Buffer As Object Dim Sh As Object Dim SaveFormat As Variant Dim fFormat As Variant Dim nFormat() As Variant Dim xFormat As Long Dim Counter As Long Dim Counter1 As Long Dim Counter2 As Long Dim StartRow As Long Dim EndRow As Long Dim pPresent As Boolean Dim NumberOfFormats As Long Dim Answer Dim Cell As Object Dim DataStart As Long Dim DataEnd As Long Dim AnswerText As String Dim ActWorkbookName As String Dim BufferWorkbookName As String NumberOfFormats = 1000 StartRow = 3 ' Do not alter this value EndRow = Rows.Count ReDim nFormat(0 To NumberOfFormats) AnswerText = "Do you want to delete unused custom formats " _ & "from the workbook?" AnswerText = AnswerText & Chr(10) & "To get a list of used " _ & "and unused formats only, choose No." Answer = MsgBox(AnswerText, 259) If Answer = vbCancel Then GoTo Finito On Error GoTo Finito ActWorkbookName = ActiveWorkbook.Name Workbooks.Add BufferWorkbookName = ActiveWorkbook.Name Set Buffer = Workbooks(BufferWorkbookName). _ ActiveSheet.Range("A3") nFormat(0) = Buffer.NumberFormatLocal Buffer.NumberFormat = "@" Buffer.Value = nFormat(0) Workbooks(ActWorkbookName).Activate Counter = 1 Do SaveFormat = Buffer.Value DoEvents SendKeys "{TAB 3}" For Counter1 = 1 To Counter SendKeys "{DOWN}" Next Counter1 SendKeys "+{TAB}{HOME}'{HOME}+{END}" _ & "^C{TAB 4}{ENTER}" Application.Dialogs(xlDialogFormatNumber). _ Show nFormat(0) ActiveSheet.Paste Destination:=Buffer Buffer.Value = Mid(Buffer.Value, 2) nFormat(Counter) = Buffer.Value Counter = Counter + 1 Loop Until nFormat(Counter - 1) = SaveFormat ReDim Preserve nFormat(0 To Counter - 2) Workbooks(BufferWorkbookName).Activate Range("A1").Value = "Custom formats" Range("B1").Value = "Formats used in workbook" Range("C1").Value = "Formats not used" Range("A1:C1").Font.Bold = True For Counter = 0 To UBound(nFormat) Cells(StartRow, 1).Offset(Counter, 0). _ NumberFormatLocal = nFormat(Counter) Cells(StartRow, 1).Offset(Counter, 0).Value = _ nFormat(Counter) Next Counter Counter = 0 For Each Sh In Workbooks(ActWorkbookName).Worksheets For Each Cell In Sh.UsedRange.Cells fFormat = Cell.NumberFormatLocal If Application.WorksheetFunction.CountIf _ (Range(Cells(StartRow, 2), Cells _ (EndRow, 2)), fFormat) = 0 Then Cells(StartRow, 2).Offset(Counter, 0). _ NumberFormatLocal = fFormat Cells(StartRow, 2).Offset(Counter, 0).Value _ = fFormat Counter = Counter + 1 End If Next Cell Next Sh xFormat = Range(Cells(StartRow, 2), Cells(EndRow, 2)). _ Find("").Row - 2 Counter2 = 0 For Counter = 0 To UBound(nFormat) pPresent = False For Counter1 = 1 To xFormat If nFormat(Counter) = Cells(StartRow, 2).Offset _ (Counter1, 0).NumberFormatLocal Then pPresent = True End If Next Counter1 If pPresent = False Then Cells(StartRow, 3).Offset(Counter2, 0). _ NumberFormatLocal = nFormat(Counter) Cells(StartRow, 3).Offset(Counter2, 0).Value = _ nFormat(Counter) Counter2 = Counter2 + 1 End If Next Counter With ActiveSheet.Columns("A:C") .AutoFit .HorizontalAlignment = xlLeft End With If Answer = vbYes Then DataStart = Range(Cells(1, 3), _ Cells(EndRow, 3)).Find("").Row + 1 DataEnd = Cells(DataStart, 3).Resize(EndRow, 1). _ Find("").Row - 1 On Error Resume Next For Each Cell In Range(Cells(DataStart, 3), _ Cells(DataEnd, 3)).Cells Workbooks(ActWorkbookName).DeleteNumberFormat _ (Cell.NumberFormat) Next Cell End If Finito: Set Cell = Nothing Set Sh = Nothing Set Buffer = Nothing End Sub '<<============================= If you are not familiar with macros, you may wish to visit David McRitchie's 'Getting Started With Macros And User Defined Functions' at: http://www.mvps.org/dmcritchie/excel/getstarted.htm --- Regards, Norman "Agotro" wrote in message ... How can I reduce the types of cells? I have tried, to no avail, to delete some Custom Cells in the Formatting section. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Norman, Thank You. It worked. I rate it at 10 out of 10.
"Norman Jones" wrote: Hi Agotro, Try the following code from Leo Heuser. To delete unused formats, answer 'yes' to the imitial message box; answering 'no' will retain all exising formats but will produce a report listing: '============================= Sub DeleteUnusedCustomNumberFormats() , May 6. 2001 'Version 1.01 Dim Buffer As Object Dim Sh As Object Dim SaveFormat As Variant Dim fFormat As Variant Dim nFormat() As Variant Dim xFormat As Long Dim Counter As Long Dim Counter1 As Long Dim Counter2 As Long Dim StartRow As Long Dim EndRow As Long Dim pPresent As Boolean Dim NumberOfFormats As Long Dim Answer Dim Cell As Object Dim DataStart As Long Dim DataEnd As Long Dim AnswerText As String Dim ActWorkbookName As String Dim BufferWorkbookName As String NumberOfFormats = 1000 StartRow = 3 ' Do not alter this value EndRow = Rows.Count ReDim nFormat(0 To NumberOfFormats) AnswerText = "Do you want to delete unused custom formats " _ & "from the workbook?" AnswerText = AnswerText & Chr(10) & "To get a list of used " _ & "and unused formats only, choose No." Answer = MsgBox(AnswerText, 259) If Answer = vbCancel Then GoTo Finito On Error GoTo Finito ActWorkbookName = ActiveWorkbook.Name Workbooks.Add BufferWorkbookName = ActiveWorkbook.Name Set Buffer = Workbooks(BufferWorkbookName). _ ActiveSheet.Range("A3") nFormat(0) = Buffer.NumberFormatLocal Buffer.NumberFormat = "@" Buffer.Value = nFormat(0) Workbooks(ActWorkbookName).Activate Counter = 1 Do SaveFormat = Buffer.Value DoEvents SendKeys "{TAB 3}" For Counter1 = 1 To Counter SendKeys "{DOWN}" Next Counter1 SendKeys "+{TAB}{HOME}'{HOME}+{END}" _ & "^C{TAB 4}{ENTER}" Application.Dialogs(xlDialogFormatNumber). _ Show nFormat(0) ActiveSheet.Paste Destination:=Buffer Buffer.Value = Mid(Buffer.Value, 2) nFormat(Counter) = Buffer.Value Counter = Counter + 1 Loop Until nFormat(Counter - 1) = SaveFormat ReDim Preserve nFormat(0 To Counter - 2) Workbooks(BufferWorkbookName).Activate Range("A1").Value = "Custom formats" Range("B1").Value = "Formats used in workbook" Range("C1").Value = "Formats not used" Range("A1:C1").Font.Bold = True For Counter = 0 To UBound(nFormat) Cells(StartRow, 1).Offset(Counter, 0). _ NumberFormatLocal = nFormat(Counter) Cells(StartRow, 1).Offset(Counter, 0).Value = _ nFormat(Counter) Next Counter Counter = 0 For Each Sh In Workbooks(ActWorkbookName).Worksheets For Each Cell In Sh.UsedRange.Cells fFormat = Cell.NumberFormatLocal If Application.WorksheetFunction.CountIf _ (Range(Cells(StartRow, 2), Cells _ (EndRow, 2)), fFormat) = 0 Then Cells(StartRow, 2).Offset(Counter, 0). _ NumberFormatLocal = fFormat Cells(StartRow, 2).Offset(Counter, 0).Value _ = fFormat Counter = Counter + 1 End If Next Cell Next Sh xFormat = Range(Cells(StartRow, 2), Cells(EndRow, 2)). _ Find("").Row - 2 Counter2 = 0 For Counter = 0 To UBound(nFormat) pPresent = False For Counter1 = 1 To xFormat If nFormat(Counter) = Cells(StartRow, 2).Offset _ (Counter1, 0).NumberFormatLocal Then pPresent = True End If Next Counter1 If pPresent = False Then Cells(StartRow, 3).Offset(Counter2, 0). _ NumberFormatLocal = nFormat(Counter) Cells(StartRow, 3).Offset(Counter2, 0).Value = _ nFormat(Counter) Counter2 = Counter2 + 1 End If Next Counter With ActiveSheet.Columns("A:C") .AutoFit .HorizontalAlignment = xlLeft End With If Answer = vbYes Then DataStart = Range(Cells(1, 3), _ Cells(EndRow, 3)).Find("").Row + 1 DataEnd = Cells(DataStart, 3).Resize(EndRow, 1). _ Find("").Row - 1 On Error Resume Next For Each Cell In Range(Cells(DataStart, 3), _ Cells(DataEnd, 3)).Cells Workbooks(ActWorkbookName).DeleteNumberFormat _ (Cell.NumberFormat) Next Cell End If Finito: Set Cell = Nothing Set Sh = Nothing Set Buffer = Nothing End Sub '<<============================= If you are not familiar with macros, you may wish to visit David McRitchie's 'Getting Started With Macros And User Defined Functions' at: http://www.mvps.org/dmcritchie/excel/getstarted.htm --- Regards, Norman "Agotro" wrote in message ... How can I reduce the types of cells? I have tried, to no avail, to delete some Custom Cells in the Formatting section. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Excel Crashes when typing "False" in VLookup formula | Excel Worksheet Functions | |||
Excel 2007 error "some chart types cannot be combined with other chart types. Select a different chart types" | Charts and Charting in Excel | |||
Excel "has stopped working" (ie. crashes) on closing programme | Excel Discussion (Misc queries) | |||
Excel crashes on "Close" Visual Basic error 400 | Excel Discussion (Misc queries) | |||
Excel 2000 crashes after "touching" a userform with the mouse and closing it | Excel Programming |