Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Giuseppe,
Ho richiesto un file di esempio perché credo che potrebbe essere possibile assegnare tutti i pulsanti a una singola macro e potrebbe quindi non essere necessario rinominare i 50 pulsanti esistenti.
Tuttavia, in attesa di una tua risposta, per rinominare i pulsanti e la loro didascalia in ordine sequenziale, prova come segue:
'========>>
Option Explicit
'-------->>
Public Sub Tester()
Dim SH As Worksheet
Dim arrNames() As Variant, arrCaptions As Variant
Dim arrTop() As Variant, arrSort() As Variant
Dim Res As Variant
Dim i As Long, j As Long, k As Long
Const sFoglio As String = **"Foglio1" '<<=== Modifica**
Set SH = ThisWorkbook.Sheets(sFoglio)
i = SH.Buttons.Count
ReDim arrNames(1 To i)
ReDim arrCaptions(1 To i)
ReDim arrTop(1 To i)
ReDim arrSort(1 To i)
For j = 1 To i
With SH.Buttons(j)
arrNames(j) = .Name
arrCaptions(j) = .Caption
arrTop(j) = .Top
End With
Next j
arrSort = SortedArrayList(arrTop)
For k = 0 To UBound(arrSort)
Res = Application.Match(arrSort(k), arrTop, 0)
With SH.Buttons(Res)
SH.Buttons(Res).Name = "Pulsante " & k + 1
.Caption = "Pulsante " & k + 1
End With
Next k
End Sub
'--------->>
Public Function SortedArrayList(V As Variant)
Dim oSortedArrayList As Object
Dim i As Long
Set oSortedArrayList = CreateObject("System.Collections.ArrayList")
With oSortedArrayList
For i = 1 To UBound(V)
.Add V(i)
Next i
.Sort
SortedArrayList = .toarray
End With
End Function
'<<========
Ho eseguito questo codice sul seguente foglio di prova con 50 pulsanti in ordine di nome casuale:
Dopo aver eseguito il codice, il mio foglio appariva così:
Potresti scaricare il mio file di prova Giuseppe20221209.xlsm
===
Regards,
Norman