Ordinare alfabeticamente

di il
7 risposte

Ordinare alfabeticamente

Scusate se commetto qualche errore ma sono neofita. In realtà sto usando visual studio 2019 con linguaggio Visual basic. Ho aperto e modificato un file excel, contenente in prima colonna il cognome, in seconda il nome e poi altri dati. Ho aggiunto una nuova riga con altri dati come i precedenti e vorrei riordinare il file mettendo i cognomi in ordine alfabetico (cosa banale lavorando in excel. Ho cercato in internet ma non ho trovato nulla.  I record li scrivo nel seguente modo (esempio di un dato):
               ws.Cells(riga_socio_da_modificare, 3) = CmbTipo.Text
               ws.Cells(riga_socio_da_modificare, 3).Font.Name = "Arial"
               ws.Cells(riga_socio_da_modificare, 3).Font.Size = 8
Qualcuno può aiutarmi ? Ho provato a creare una macro in excel e mettere il codice corrispondente in Visual studio ma non funziona e da un sacco di errori di compilazione.
A disposizione per ulteriori chiarimenti se qualche buna persona mi vuole aiutare.
Grazie Roberto R.

7 Risposte

  • Re: Ordinare alfabeticamente

    Guarda che non si capisce nulla. Che c'entra l'ordinamento? Di cosa?

    Devi dare un contesto alla questione, linguaggio usato VB.NET, cosa vuoi fare, cosa hai fatto, cosa non va.

    Mostra tutto il codice non solo 3 righe.

    E poi, perché non scrivi nella sezione VBNET?

    P.S. Te l'ho detto tante volte, non è difficile, le tue risposte non metterle con il codice!

  • Re: Ordinare alfabeticamente

    Chiedo scusa nuovamente ma credevo di essere chiaro.  Nel file excel vorrei mettere le righe ordinate in ordine alfabetico rispetto alla prima colonna che contiene il cognome: quindi riga 1 colonna 1 Brambilla e nelle colonne successive della riga 1 tutti dati del sig Brambilla; riga 2 colonna 1 ad es Calvi e nelle colonne successive della riga 2 i dati del sig Calvi ecc. Succede che se aggiungo un nuovo nome nella prima riga libera in fondo al file ad es Bomilla ecc questa nuova riga dovrebbe, dopo l'ordinamento, essere inserite tra la riga 1 e la riga due perchè Bomilla, in ordine alfabetico sta tra Brambilla e Calvi. Spero di aver chiarito cosa intendevo.

    Scusandomi ancora per la mia incompetenza ringrazio di cuore 

  • Re: Ordinare alfabeticamente

    Usa

    Range.Sort

  • Re: Ordinare alfabeticamente

    Grazie del suggerimento ma in Visual studio 2019 come scrive Range me lo sottolinea subito in rosso e se metto il punto intellisense non mi fa comparire sort. Avevo fatto lo stesso codice in Visual basic e l'ordinamento alfabetico funziona perfettamente con il seguente codice

            'Metto in ordine alfabetico tutti i soci
           Worksheets(1).Sort.SortFields.Clear
           Worksheets(1).Sort.SortFields.Add2 Key:=Range("A3:A546") _
             , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
           With ActiveWorkbook.Worksheets(1).Sort
           .SetRange Range(Cells(3, 1), Cells(riga_nuovo_socio, 546))
           .Apply
           End With
    questo però inserito in visual studio 2019 non funziona assolutamente dando errori su quasi tutto: Worksheets, ActiveWorkbook, sort, range.

    Alcune cose riesco a togliere l'errore ad es aggiungendo ws. a Cells ma per il resto niente da fare.

    Grazie

  • Re: Ordinare alfabeticamente

    lo stesso codice in Visual basic

    Di quale versione di Visual Basic parli?

    (Infatti era stati usato giustamente il metodo Sort)

    in visual studio 2019 

    Cioè in VB.NET, Visual Studio è solamente un IDE, il linguaggio è VB.NET

    27/10/2023 - spanky ha scritto:


    dando errori su quasi tutto

    aggiungendo ws. a

    E' ovvio, se usi oggetti e metodi VBA direttamente in VB.NET non puoi che avere errori dato che non possono essere riconosciuti direttamente.

    Devi creare gli oggetti di Excel in VB.NET (ws è forse uno di quelli) e operare con questi riferimenti.

    Ti è stato già detto in passato che devi studiare il “modello ad oggetti” di Excel, creare l'istanza Application in VB.NET e operare attraverso quella, se vuoi usare il VB-NET con Excel.

    Ma ti è stato già detto che usando Excel come DB è più logico usare il VBA incluso in Excel. In caso contrario, con VB.NET ha più senso creare un DB vero e proprio che gestisce meglio tutte queste operazioni.

    Del resto se non si vede TUTTO il codice che hai scritto, come si fa a dirti qualcosa di sensato??

  • Re: Ordinare alfabeticamente

    OK accetto umilmente le osservazioni ma credevo che per degli esperti come voi fosse sufficientemente chiaro. Riafaccio tutto dall'inizio.
    Supponiamo di avere un file excel del tipo (riporto solo poche righe e colonne per semplicità)
    Adesso aggiungo nella prima riga libera (la 5) un nuovo nome
    Questo non è ordinato. In Excel è banale: Seleziono tutto dalla riga 2 alla 5 e clicco su ordina ottenendo
    Posso ottenere lo stesso risultato con VBA in una userform con un pulsante ordina che esegue ilseguente codice
    L'excel che uso e relativo VBA è quello del 2021. 
    In Visual studio 2019 ho diverse userform e per aprire e modificare i file excel definisco in un modulo le seguenti variabili
    Module Module1
       Public Cf_socio As String
       Public nomefile As String
       Public ultima_riga_soci As Integer
       Public riga_socio_da_modificare
       Public ws As Microsoft.Office.Interop.Excel.Worksheet
       Public wb As Microsoft.Office.Interop.Excel.Workbook
       Public excel As Microsoft.Office.Interop.Excel.Application
       Public dialogo As OpenFileDialog
    End Module
    Questo per fare in modo che il file sia visibile e usabile in diverse form. In particolare ho una userform che mi aggiunge un nuovo socio
    e per fare questo scrivo ( e funziona) 
    ws.Cells(riga_socio_da_modificare, 1) = Trim(StrConv(TxtCognomeSocio.Text, vbProperCase))
    ws.Cells(riga_socio_da_modificare, 2) = Trim(StrConv(TxtNomeSocio.Text, vbProperCase))
    ws.Cells(riga_socio_da_modificare, 6) = Trim(TxtNascitaSocio.Text)
    In generale questo non sarà in ordine alfabetico con i precedenti nomo per cui mi chiedo come faccio a metterli in ordine alfabetico.
    Ho pensato di modificare il codice usato in VBA credendo erroneamente che la cosa fosse facile ma ho scoperto che non è cosi  e per questo ho chiesto aiuto a qualcuno più esperto e bravo di me. Sarei veramente grato se qualcuno ha mai avuto bisogno di fare una cosa simile e che possa aiutarmi
    Come detto in precedenza alcune cose sono riuscito a corregerle ma non tutte.
    A disposizione per ulteriori chiarimenti
    Roberto R.
  • Re: Ordinare alfabeticamente

    Ma perché non scrivi correttamente nel forum?

    Il codice va inserito usando il tasto <> ma il resto no. Diventa faticoso leggere quello che scrivi e comunque non hai provatp ancora ad usare il metodo Sort nel tuo codice.

Devi accedere o registrarti per scrivere nel forum
7 risposte