Macro cancellazione caratteri speciali



  • Macro cancellazione caratteri speciali
    di Antonio (utente non iscritto) data: 30/12/2017 15:41:09

    Salve a tutti,
    Ho un piccolo problema, vorrei cancellare tutti i caratteri speciali (* " / # .... ) che si trovano nelle celle della colonna B e sostituirli con lo "spazio". Se è possibile eseguire una macro.

    Grazie ancora per l aiuto.




  • di Marius44 data: 30/12/2017 18:05:30

    Ciao Antonio
    Innanzi tutto come sei messo a conoscenza di codice VBA?
    Se hai un minimo ti posto unaFunction che feci tempo fa per controllare la password d'accesso ad un file. Prende in considerazione numeri e lettere (maiuscole o minuscole) escludendo tutto il resto. Prova ad adattarla alle tue esigenze.

    Fai sapere. Ciao,
    Mario
     
    Public Function ctrpsw(a) 'controllo tasti password
    mes1 = "ATTENZIONE!" & vbLf
    mes2 = "L'utilizzo del tasto    '  "
    mes3 = "  '    non è consentito." & vbLf
    mes4 = "Correggere."
    'controlla cosa è stato inserito
        lung = Len(p)
        For i = 1 To lung
            a = 0: alfanum = Asc((Mid(p, i, 1)))
            Select Case alfanum
                Case 48 To 57   'è una cifra
                Case 65 To 90   'è una lettera maiuscola
                Case 97 To 122  'è una lettera minuscola
                Case Else       'scarta tutti glia ltri tasti
                mes = MsgBox(mes1 + mes2 + Chr(alfanum) + mes3 + mes4, 32 + 0, tit): a = 1
                Exit Function
            End Select
        Next i
    End Function



  • di Zer0Kelvin data: 30/12/2017 19:54:06

    Ciao.
    Prova la macro qui sotto.
    Nella costante Altri ho inserito i caratteri che non dovrebbero essere cancellati; puoi aggiungerne o eliminarne a piacere.
     
    Sub PulisciCaratteri()
    Const Altri = ",.;:-+*/òèéìàù" 'caratteri permessi
    Dim C As Long, I As Long, Ch As Integer
    Dim Valore As String
    For C = 1 To Cells(Rows.Count, 2).End(xlUp).Row
        Valore = Cells(C, 2)
        For I = Len(Valore) To 1 Step -1
            Ch = Asc(Mid(Valore, I, 1))
            If Not ((Ch >= 48 And Ch <= 57) Or (Ch >= 65 And Ch <= 90) Or (Ch >= 92 And Ch <= 122) _
                    Or (InStr(Altri, Chr(Ch)) > 0)) Then
                Valore = Left(Valore, I - 1) & Right(Valore, Len(Valore) - I)
            End If
        Next I
        Cells(C, 2) = Valore
    Next C
    End Sub