Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    240

    macro in excel vba

    Ciao ragazzi sto provando a fare una macro con excel e visual basic ma ho questo problema
    il codice è questo

    Sub mia()
    A = Len(Cells(1, 1).Value)
    MsgBox A
    End Sub

    vorrei che in A mi restituisse la lunghezza contenuta nella cella 1,1 invece mi da il valore 255...
    in modo da poter cancellare nella macro finale le celle che contengono una stringa di un certo numero di caratteri
    qualcuno saprebbe indicarmi cosa sbaglio e come si puo fare.
    Vi ringrazio anticipatamente

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    240
    Il len dovrebbe servire a dare la lunghezza della stringa contenuta nella cella...
    Come non c'entra...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Sinceramente il tuo codice mi restituisce correttamente il numero dei caratteri.

    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Scrivendo htmlforum, mi restituisce:
    Immagini allegate Immagini allegate
    Sbagliare è umano, perseverare è diabolico.

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da illiterate
    Il len dovrebbe servire a dare la lunghezza della stringa contenuta nella cella...
    Come non c'entra...
    Ops, avevo capito che volevi il valore.
    Altra occasione persa per starmene zitto...

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    240
    Ciao ragazzi pare che ho risolto aggiungendo la funzione trim
    ecco il codice

    Sub elimina()
    ic = 1
    ir = 1
    For ir = 1 To 4878
    A = Cells(ir, ic).Value
    B = Len(Trim(A))
    If B = 2 Then
    Cells(ir, ic).EntireRow.Delete
    End If
    ir = ir + 1

    Next

    End Sub

    Ciao grazie

  8. #8
    Originariamente inviato da illiterate
    Ciao ragazzi pare che ho risolto aggiungendo la funzione trim
    ecco il codice

    Sub elimina()
    ic = 1
    ir = 1
    For ir = 1 To 4878
    A = Cells(ir, ic).Value
    B = Len(Trim(A))
    If B = 2 Then
    Cells(ir, ic).EntireRow.Delete
    End If
    ir = ir + 1

    Next

    End Sub

    Ciao grazie
    Tralasciando per un momento il fatto che il codice va postato negli appositi tag CODE, vedo qualcosa in questo codice che non mi piace:

    1. ic = 1 --> se è una costante, perchè nelle tue istruzioni non utilizzi direttamente il numero?
    2. ir = ir+1 --> perchè? Il ciclo for autonomamente incrementa la variabile contatore ir , nella fattispecie di 1 (dal momento che non hai specificato nessuno Step)

    In definitiva, puoi "contrarre" tutta la procedura così:

    codice:
      
    Sub elimina()
    For ir = 1 To 4878 
        If Len(Trim(Cells(ir, 1).Value))= 2 Then Cells(ir, 1).EntireRow.Delete
    Next
    End Sub

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    In più se si controllava il valore della cella:

    codice:
    Cells(1, 1).Value
    prima di postare non eravamo qui a discutere.
    Sbagliare è umano, perseverare è diabolico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.