Convalida dati solo stringa



  • Convalida dati solo stringa
    di paganiva (utente non iscritto) data: 16/06/2013 23:27:36

    Saluti a tutti
    Motivo del contendere ....................
    Come potrei fare in modo che, in una convalida dati, all'apertura mi visualizza il contenuto da scegliere e dopo in cella mi compare solo la striga di questo.
    Mi spiego, dalla convalida es. scelgo 11 AAAA e nella cella mi compare AAAA.
    Questo mi serve perchè ho la necessità che dei codici mi siano proposti ad inizio del menu a tendina, pertanto li faccio precedere da dei numeri dallo 00 a 99 seguiti da spazio e quindi la stringa.
    Spero di essermi spiegato oppure allego il file.
    Ciao a tutti

     
    Public Function SOLOSTRINGA(ST As Variant) As String
    Dim X As Integer
    
    If IsNumeric(ST) Then SOLOSTRINGA = "": Exit Function
    If IsNumeric(Mid(ST, 1, 1)) Then
        For X = InStr(ST, " ") To Len(ST)
            If X = 0 Then SOLOSTRINGA = "": Exit Function
            If Mid(ST, X, 1) <> " " Then
                SOLOSTRINGA = Mid(ST, X, Len(ST)): Exit Function
            End If
        Next X
    Else
    SOLOSTRINGA = ST
    End If
    End Function
    Sub Ordina()
    
        ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Foglio1").Sort.SortFields.Add Key:=Range("N1:N20") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Foglio1").Sort
            .SetRange Range("N1:N20")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("N1").Select
    End Sub
    Sub Ripristina()
        Range("R1:R20").Select
        Selection.Copy
        Range("N1:N20").Select
        ActiveSheet.Paste
       Application.CutCopyMode = False
        Range("N1").Select
    End Sub
    



  • di Vecchio Frac data: 17/06/2013 21:35:24

    Se non riordini la colonna dei dati che entrano nella convalida, questi si presentano come immessi, nell'ordine.
    Quindi non c'è problema a far visualizzare in convalida le voci NUTR, AAAA, BBB, CVBN eccetera, proprio nell'ordine che compaiono in colonna dati.
    La strada più tortuosa è intercettare il SelectionChange del foglio, ricostruire la convalida sulla base del range dati, e intercettare poi in base alla scelta dell'utente l'evento Change del foglio, mostrando il dato pulito dalla funzione "solostringa" (che, detto tra noi, mi sembra abbastanza inutilmente complicata).





  • di Vecchio Frac data: 17/06/2013 21:39:51

    Per completezza, ecco come semplificherei la function SOLOSTRINGA.
     
    Public Function SOLOSTRINGA(ST As Variant) As String
        On Error Resume Next
        SOLOSTRINGA = Split(ST, " ")(1)
    End Function






  • di paganiva (utente non iscritto) data: 17/06/2013 23:14:01

    Ok Vecchio Frack troppo complesso, al momento uso un'escamotage, nascondendo la parte numeraria in quanto la coloro di bianco.
    Grazie per la public SOLOSTRIGA veramente ....... stringata ma molto efficente.
    Saluti e grazie



  • di paganiva (utente non iscritto) data: 18/06/2013 06:13:14

    P.S.
    La funzione SOLOSTRINGA originaria è articolata per operate sulle stringe precedute da due numeri e uno spazio
    00 AAA diventa AAA
    nella seconda funzione
    00 AAA diventa (vuoto)
    Saluti e grazie



  • di Vecchio Frac data: 18/06/2013 11:08:11

    cit. "al momento uso un'escamotage, nascondendo la parte numeraria in quanto la coloro di bianco"
    ---> LOL, ma è terribile ^_^
    Ma i dati con solo codice letterale (senza numeri), sono proposti o no in convalida nell'ordine in cui sono stati immessi nel range? perchè il punto è tutto qui... a me sembra che sia rispettato l'ordine di presentazione, per cui il trucco col codice numerico non ti serve proprio.


    cit. "nella seconda funzione 00 AAA diventa (vuoto) "
    ---> direi di no, ho verificato, passando alla mia funzione ridotta la stirnga "00 AAA" mi ritorna "AAA".
    Ritorna (vuoto) solo se non ci sono spazi a fare da separatore





  • di paganiva (utente non iscritto) data: 18/06/2013 15:27:02

    Ok Vecchio Frac, mi scuso per la precipitazione, non avevo tenuto in considerazione lo spazio prima della stringa.
    Relativamente all'uso di colorare i numeri è solo per un fatto estetico, in quanto nelle stampe non devono comparire. Ho capito che nella convalida l'ordine resta invariato, ma per il lavoro che ho preparato, capita di fare una ricerca ordinando alfabeticaente anche la colonna a senza i numeri perdo l'ordine che voglio preservare e i nominativi con lo spazio prima della stringa (senza numero) si posizionano per primi nell'ordine alfabetico.
    Allego il file anche se capisco che è molto contorta la mia richiesta, cosa metto a che fare le colonne appoggio se poi non le uso?, ma per ragioni d'uso posso solo fare così.
    Saluti e grazie del tempo e di cercare di capire cosa vorrei ottenere.