inserire carattere speciale



  • inserire carattere speciale
    di MatteoM data: 10/08/2016 12:27:17

    Buongiorno a tutti...

    ho una piccola domanda: come si inseriscono i caratteri speciali con vba? sto provando con le istruzioni Chr(149), che, facendo riferimento al codice ascii, mi restituisce un pallino pieno. Ho notato però che se volessi inserire un carattere diverso (esempio una freccia) devo impiegare un'altra istruzione, per esempio, chrw(&h****) ?
    Leggevo un'altra discussione www.excelvba.it/Forum/story/Excel_e_gli_applicativi_Office/CODICE_ASCII_ASSOCIATO_A_LABEL.html, però non sono riuscito ad ottenere il risultato che volevo.
    ho fatto dei tentativi con dei codici a 4 cifre a caso per vedere se ottenevo dei risultati ma niente da fare.
    Grazie a chi mi risponderà



  • di Vecchio Frac data: 10/08/2016 13:29:50

    Quali sono i "caratteri speciali" cui ti riferisci? Frecce, quadrati, quadrati con spunta ecc. tipiche dei Wingdings?
    Andare a caso è una soluzione ma di solito non porta a risultati prevedibili, in nessun campo di applicazione... eventualmente si va a campione :)
    Scherzi a parte comunque, se hai visto come funziona la tabella codifica ASCII dei caratteri, avrai compreso che ammette codici da 0 a 255 (toh... esattamente un byte, guarda che coincidenza... ma non è un caso ^_^). La funzione Chr(codice) restituisce il carattere associato al codice specificato per la tabella ASCII. Un po' quello che accade quando digiti il codice sul tastierino numerico (preceduto da zero) mentre tieni premuto il tasto Alt.
    La funzione ChrW (che sta per Wide) funziona come Chr ma serve a leggere i caratteri Unicode della tabella estesa stabilita dallo standard di classificazione ISO (hai presenti i codici di codifica delle tastiere? sono stabiliti da questa ISO, che definisce anche Unicode i.e. UTF-8 indica caratteri a 8 bit, UTF-16 i caratteri a 16 bit etc.) per cui puoi rappresentare con un unico carattere dei simboli complessi come i grafemi arabi, thai, ebraici, giapponesi, ecc.
    Wingdings per esempio: è costruito con una tabella Unicode. I codici Unicode sono più estesi di quelli ASCII perchè vanno ben oltre 255: infatti la codifica è a due bytes (16 bit).
    Fatti un giro con Google cercando "Caratteri Unicode" e troverai un mare di informazioni. Soprattutto il primo risultato mi pare interessante (ed è pure in italiano).





  • di MatteoM data: 10/08/2016 14:14:13

    Ciao Vecchio Frac, grazie per l'interessantissima risposta.

    Con un pò di tentativi, servendomi anche del registratore di macro su excel ho inserito il carattere desiderato "→".
    Ho letto nella tabella su excel che il codice carattere da unicode (Hex) è 2192.

    A questo punto ho riportato con successo il carattere in vba con l'istruzione chrw(&h2192).

    Ero fermo al codice ascii.... non sapevo di questi sistemi di codifica dei caratteri




  • di Vecchio Frac data: 10/08/2016 15:08:04

    cit. " ho riportato con successo il carattere in vba con l'istruzione chrw(&h2192). "
    ---> Esatto... potresti obiettare però che se lo digiti in Editor di codice o in finestra immediata non vedi il carattere esteso... prova con Alt+8594 (sul tastierino numerico!). Vedrai un altro carattere, mentre funziona se lo visualizzi in una Label su un form. Questo perchè l'editor utilizza una codifica di font non Unicode :)