Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[vba excel]: macro per modificare testo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[vba excel]: macro per modificare testo

Postdi karug64 » 04/07/17 20:15

Salve a tutti.
Nel mio foglio di lavoro ho questa situazione:
nella colonna "Q" (in varie righe, ma non sempre le stesse: Q16/Q17/Q19/Q22/Q23/Q24/Q27/...../Q2000), l'utente deve immettere un valore (da un elenco a tendina) che può essere "I" o "E" o vuoto.
Sulla scorta del valore inserito nella corrispondente cella "P" dovrei fare questa operazione:
1) se la cella "P" è vuota = nessuna azione (con messaggio di avvertenza)
2) se la cella "P" non è vuota = antepone al testo presente nella cella la parola "INTERNA" o "ESTERNA" a seconda che il valore sia "I" o "E" dopo aver controllato che la prima parola non sia già "INTERNA" o "ESTERNA".

Ho cercato di fare qualcosa :

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("NEW").Range("q16").Value = "I" Then
    If Len(Trim(Sheets("NEW").Range("P16").Value)) = 0 Then
        Sheets("NEW").Range("P16").Value = "INTERNA - " & Sheets("NEW").Range("P16").Value
    Else
        If Left(Sheets("NEW").Range("P16").Value, 7) <> "INTERNA" Then
            Sheets("NEW").Range("P16").Value = "INTERNA - " & Sheets("NEW").Range("P16").Value
        Else
            te = ""
            te = Mid(Sheets("NEW").Range("P16").Value, 10, Len(Sheets("NEW").Range("P16").Value))
            Sheets("NEW").Range("P16").Value = ""
            Sheets("NEW").Range("P16").Value = "INTERNA - " & Sheets("NEW").Range("P16").Value
        End If
   
    End If
End If
End Sub


Ora, a prescindere dai controlli che vanno ancora affinati, il problema è che se in P16 scrivo "PROVA" e in Q16 scrivo "I" il risultato è che in P16 mi trovo ripetuto "INTERNA" svariate volte e alla fine "PROVA".

Inoltre, ammesso che riesca a fare funzionare la macro, mi chiedevo, ma come devo fare per abbinarla a tutte le celle della colonna "Q" che abbiano un corrispettivo valore in colonna "P" ?

E' possibile ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 747
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: [vba excel]: macro per modificare testo

Postdi Anthony47 » 05/07/17 02:14

Prova con questa Sub Worksheet_Change:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 17 And Target.Count = 1 Then
Application.EnableEvents = False
    If Target.Value = "I" Then
        If Target.Offset(0, -1) <> "" Then
            If Left(Target.Offset(0, -1), 7) = "INTERNA" Then
            Else
                Target.Offset(0, -1) = "INTERNA " & Replace(Target.Offset(0, -1), "ESTERNA ", "", , , vbTextCompare)
            End If
        Else
            MsgBox ("messaggio di avvertenza")
        End If
    ElseIf Target.Value = "E" Then
        If Target.Offset(0, -1) <> "" Then
            If Left(Target.Offset(0, -1), 7) = "ESTERNA" Then
           
            Else
                Target.Offset(0, -1) = "ESTERNA " & Replace(Target.Offset(0, -1), "INTERNA ", "", , , vbTextCompare)
            End If
        Else
            MsgBox ("messaggio di avvertenza")
        End If
    End If
Application.EnableEvents = True
End If
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17664
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba excel]: macro per modificare testo

Postdi karug64 » 05/07/17 15:23

Grazie infinite!!!!

Tutto perfettamente funzionante.
Office 2010
karug64
Utente Senior
 
Post: 747
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "[vba excel]: macro per modificare testo":


Chi c’è in linea

Visitano il forum: raimea e 52 ospiti