|
||||
These pages are no longer updated and are only available for archive purposes.Click here to visit the pages with updated information. Return how many characters that will fit in the column widthAs long as you are using the default/normal font this problem has a simple solution: Function GetColumnCharsCount(rngInputCell As Range, strFont As String, intSize As Integer, _ blnBold As Boolean, blnItalic As Boolean) As Double ' returns the average count of characters that can be displayed within rngInputCell ' for a given font, size and style ' rngInputCell is supposed to be a single cell only, ' it can not be a cell in the last column in a worksheet ' example use: ' dblResult = GetColumnCharsCount(ActiveCell, "Arial", 14, True, False) ' dblResult = GetColumnCharsCount(Range("A1"), "Arial Narrow", 8, False, False) Dim s As Style, asu As Boolean, c As Long, dblPixels(0 To 2) As Double Dim strFont1 As String, intSize1 As Integer, blnBold1 As Boolean, blnItalic1 As Boolean Dim dblColWidth As Double If rngInputCell Is Nothing Then Exit Function On Error Resume Next Set s = ActiveWorkbook.Styles("Normal") On Error GoTo 0 If s Is Nothing Then Exit Function asu = Application.ScreenUpdating If asu Then Application.ScreenUpdating = False End If With s.Font ' store original settings for the Normal style strFont1 = .Name intSize1 = .Size blnBold1 = .Bold blnItalic1 = .Italic dblColWidth = rngInputCell.ColumnWidth ' get the average characters/pixel dblPixels(1) = dblColWidth / (rngInputCell.Offset(0, 1).Left - rngInputCell.Left) ' change to temporary settings for the Normal style .Name = strFont .Size = intSize .Bold = blnBold .Italic = blnItalic ' get the average characters/pixel dblPixels(2) = dblColWidth / (rngInputCell.Offset(0, 1).Left - rngInputCell.Left) ' restore original settings for the Normal style .Name = strFont1 .Size = intSize1 .Bold = blnBold1 .Italic = blnItalic1 End With If asu Then Application.ScreenUpdating = True End If ' calculate result GetColumnCharsCount = dblColWidth * dblPixels(2) / dblPixels(1) End Function Sub TestGetColumnCharsCount() Dim dlbResult As Double dlbResult = GetColumnCharsCount(ActiveCell, "Verdana", 14, True, False) MsgBox "The active cell can on average display " & Format(dlbResult, "0.0") & _ " characters in Verdana 14 point bold!", vbInformation End Sub
Document last updated 2006-01-27 11:10:57 Printerfriendly version
|
||||
|