Buongiorno Carlo.
Vediamo di capire quello che stai cercando di fare.
In pratica, vorresti creare una VBA grazie alla quale sostituire o eliminare una parola all'interno di un range specifico, esatto?
Ebbene, per domande come queste, che esulano un po' dallo scopo di questa Community, è possibile rivolgersi presso
MSDN, il nostro forum gemello. Ad accoglierti, troverai non solo i nostri colleghi, ma anche professionisti ed esperti programmatori che sapranno
consigliarti su come intervenire per risolvere questioni relative alla VBA.

Nel frattempo, fammi sapere se hai altre domande sui nostri prodotti, alle quali la Community sarà lieta di risponderti.
Buona giornata
Luana
Ciao Luana e grazie per la risposta.
Ti confesso che altre volte ho cercato di formulare domante a MSDN, ma purtroppo non ho ricevuto risposte, per cui le formulo in questo forum perché qualcuno, cortesemente, mi ha sempre risposto.
Io sono ancora un neofita in VBA (ho 74 anni...ma con tanta buona volontà).
Sto ri-organizzando il mio archivio musicale e alcuni percorsi di VBA non mi riescono ancora (...li devo acquisire).
Comunque ho formulato la domanda al forum di MSDN. Incrociamo le dita!
PS. (per essere più chiaro)
<<<vorresti creare una VBA grazie alla quale sostituire o eliminare una parola all'interno di un range specifico.
Si, eliminare o sostituire. Ma non una qualsiasi parola, ma la 1', o la 2', o la 3'... (come spiegato nell'esempio che ho fatto)
In un modulo di codice standard, prova qualcosa del genere:
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet
Dim Rng As Range
Dim arrIn As Variant
Dim sStr As String
Dim LRow As Long
Dim i As Long, j As Long, k As Long
Const sFoglio As String = "Foglio1" '<<=== Modifica
Const sColonna As String = "A:A" '<<=== Modifica
Const sParola As String = "Interno" '<<=== Modifica
Set WB = ThisWorkbook
Set SH = WB.Sheets(sFoglio)
With SH
LRow = LastRow(SH, .Columns(sColonna))
Set Rng = .Range("A1:A" & LRow)
End With
arrIn = Rng.Value
For i = 1 To UBound(arrIn)
Do
sStr = arrIn(i, 1)
j = InStr(1, sStr, sParola, vbTextCompare)
k = InStrRev(sStr, sParola, -1, vbTextCompare)
If k > j Then
sStr = Replace(sStr, sParola, vbNullString, 1, 1, vbTextCompare)
arrIn(i, 1) = sStr
End If
Loop Until j = k
Next i
Rng.Value = arrIn
End Sub
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, _
Optional minRow As Long = 1, _
Optional sPassword As String)
Dim bProtected As Boolean
With SH
If Rng Is Nothing Then
Set Rng = .Cells
End If
bProtected = .ProtectContents = True
If bProtected Then
.Unprotect Password:=sPassword
End If
End With
On Error Resume Next
LastRow = Rng.Find(What:="*", _
after:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
If bProtected Then
SH.Protect Password:=sPassword, _
UserInterfaceOnly:=True
End If
End Function
'<<=========
===
Regards,
Norman
