Howard ha bisogno di scoprire tutte le colonne in un foglio di lavoro che hanno una data larghezza. Ad esempio, deve sapere quali colonne hanno una larghezza di 3,6.

Questo può essere fatto usando una macro. Una delle proprietà a cui può accedere la tua macro è la larghezza di ogni colonna. Ciò significa che puoi scorrere le colonne e confrontare quelle larghezze con la larghezza desiderata (3.6) nel modo seguente:

Sub ListColumns()

Dim dColWidth As Double     Dim sMsg As String     Dim x As Integer

dColWidth = 3.6     sMsg = ""

For x = 1 To ActiveSheet.Columns.Count         If Columns(x).ColumnWidth = dColWidth Then             sMsg = sMsg & vbCrLf & x         End If     Next     If sMsg = "" Then         sMsg = "There are no columns with" & _           vbCrLf & "a width of " & dColWidth     Else         sMsg = "The following columns have" & _           vbCrLf & "a width of " & dColWidth & _           ":" & vbCrLf & sMsg     End If     MsgBox sMsg End Sub

Questa macro visualizza una finestra di messaggio che elenca le colonne che corrispondono alla larghezza desiderata. La macro può essere resa più robusta con alcune semplici modifiche. Ad esempio, il seguente esempio richiede all’utente una larghezza di colonna, conta il numero di corrispondenze e compensa anche se il foglio di lavoro utilizza la modalità di riferimento R1C1.

Sub Find_ColumnWidth()

Dim Col As Integer          ' Column (loop variable)

Dim ColsFound As Integer    ' Columns Found Count     Dim Desired_Width As Double ' Column Width To Find     Dim OutStr As String        ' Output String     Dim Title As String         ' Msgbox Title     Dim I As Integer     Dim S As String

' Find out column width wanted     S = InputBox("Enter ColumnWidth to find ?", _       " Find ColumnWidth on " & ActiveSheet.Name)

Desired_Width = Val(S)

If Desired_Width = 0 Then Exit Sub

' Initialize Columns Found Count and Output String     ColsFound = 0     OutStr = ""



For Col = 1 To ActiveSheet.Columns.Count         If Columns(Col).ColumnWidth = Desired_Width Then             ColsFound = ColsFound + 1

If Application.ReferenceStyle = 1 Then                 ' Using "A1" format                 S = Cells(1, Col).Address(ReferenceStyle:=xlA1)

S = Mid(S, 2, Len(S) - 3)

Else                 ' Using "R1C1" format                 S = Trim(Str(Col))

End If             OutStr = OutStr & S & vbCrLf         End If     Next

' Construct MsgBox Title string     Title = "Width=" & Desired_Width _       & " on " & ColsFound & " column" _       & Left("s", - (ColsFound > 1)) & " "



If ColsFound = 0 Then         OutStr = "No matches found"

End If

MsgBox OutStr, vbOKOnly, Title End Sub

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (3827) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: