Sub MacroLauncher() ' Paul Beverley - Version 12.05.22 ' Offers a list of macros to launch (was called "MacroMenu") myList1 = "a=AccentAlyse, d=DocAlyse, h=HyphenAlyse" myList2 = "w=WordPairAlyse, p=ProperNounAlyse, i=IZISCount" myList3 = "z=IStoIZ, s=IZtoIS, l=SpellingErrorLister" myList4 = "c=CopyTextSimple, m=MultiFileText, f=FRedit" myList5 = "e=SpellingErrorHighlighter, u=UKUSCount" ' myList5 = "e=SpellingErrorHighlighter, u=UKUSCount, g=MegAlyse" myList = "," & myList1 & "," & myList2 & "," & myList3 & "," _ & myList4 & "," & myList5 myList = Replace(myList, ",,", ",") mcr = Split(myList, ",") myPrompt = "" myCodes = "" numItems = UBound(mcr) For i = 1 To numItems mcr(i) = Trim(mcr(i)) myCode = Left(mcr(i), 1) myCodes = myCodes & myCode mName = Mid(mcr(i), 3) myPrompt = myPrompt & Trim(Str(i)) & " " & ChrW(8211) & " " myPrompt = myPrompt & mName & " (" & myCode & ")" & vbCr Next i Do myResponse = UCase(InputBox(myPrompt, "MacroLauncher")) myNum = Val(myResponse) If myResponse = "" Then Exit Sub If myNum = 0 Then myNum = InStr(UCase(myCodes), Left(myResponse, 1)) End If Loop Until myNum > 0 And myNum < numItems + 1 mName = Mid(mcr(myNum), 3) Application.Run MacroName:=mName End Sub