Controllo dei formati

  • Formato data, alliena testo. di Visitorsvba
    Ciao ragazzi,
    in caselle di testo di una userform,
    come si fa a dare un formato data di questo tipo 10-ott-06?
    e, poi, come si allinea il testo (sinistra, centro, destra)?
    il tutto andrà a finire sul foglio elettronico.

    grazie

    di Enzo
    Penso che dovresti fare cosi'
    all'interno della textbox che in questo esempio e' la textbox1 dovresti copiare queste due istruzioni descritte qui sotto
    la prima nel momento in cui digiti la data dovrebbe dividere la data da un trattino e la seconda dovrebbe far si che nel momento in cui ti sposti fuori dalla textbox la data all'interno si trasforma nel tipo che avevi richiesto
    per quanto riguarda l'allineamento clicchi sulla textbox con il tasto destro del mouse richiami le propieta' a destra dello schermo vedrai comparire tutte le proprieta' della textbox vai alla voce textallign e selezioni quello che vuoi "destro centro sinista"
    spero di essere stato chiaro e fa sapere se funziona

     
    Private Sub TextBox1_Change()
    X = Len(TextBox1)
    Y = LTrim(TextBox1.Text)
    If X = 2 Then TextBox6 = Y & "-"
    If X = 5 Then TextBox6 = Y & "-"
    If X = 8 Then
    UserForm1.TextBox1.SetFocus
    End If
    End Sub
    '''''''''''''''''''''''''''''''''''''''''
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1 = Format(TextBox1, "d-mmm-yy")
    End Sub
    
    

    di Enzo
    '''correzione '''
    le proprieta' appaiono per default sulla sinistra dello schermo

    di Apoben64
    Oltre a ciò che ti ha detto enzo, puoi usarla anche dopo aver digitato la data.
    invece per l'allineamento della txtbox, puoi andare nel vba della txtbox , premere f4 (proprietà della txtboc) e poi settare -textalign- come desideri .
    ciao luca
     
    Private Sub TextBox1_AfterUpdate()
    TextBox1 = Format(TextBox1, "dd/mm/yy")'o il formato che vuoi
    End Sub

    Formato data di Visitorsvba
    Intanto grazie, come al solito, per l'aiuto che mi date. non rispondo subito solo perchè non accendo sempre il pc.
    ritornando al codice formato data non mi dà il formato che desideravo, cioè 10-ott-06 come appare sulla cella di un foglio dando come formato data quel tipo di formato.
    io volevo impostare a priore quel tipo di formato senza formattare le celle.
    ci sono altre strade?

    di Apoben64
    Prego visitorsvba
    a contattarmi , utilizzando la sezione contatti , grazie.

    Formattazione di Visitorsvba
    Scusate ragazzi, forse mi sono espresso male.
    voglio formattare il testo (testo a capo, allineamento, ecc. come si fa da formato cella da excel)i dati inseriti dalla userform sul foglio di lavoro.
    grazie

    Formattare di Visitorsvba
    Esempio inserisce il "nome" nella cella di un foglio:
    ...
    worksheets("arclienti").cells(irow, 1) = ucase(txtboxcognomenome)
    ...
    questo dato deve essere:
    1) testo a capo (come da formato - cella - allineamento - testo a capo)
    2) allineamento testo verticale al centro (come da formato - cella - allineamento testo - verticale - al centro)
    3) una riga orizzontale per separarsi con il prossimo dato (come da formato - cella - bordo - riga continua in basso)
    mi sapete aiutare???

    grazie

    di Enzo
    Inserisci questo

     
     With Selection
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .MergeCells = False
        End With
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeTop).LineStyle = xlNone
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Selection.Borders(xlEdgeRight).LineStyle = xlNone

    Formattazione di Visitorsvba
    Grazie per la risposta.
    puoi spiegarmi il seignificato di ogni riga di codice?

    grazie

    di Enzo
    Un consiglio che ti posso dare
    quando vuoi formattare una cella alinearla etc
    utilizza il registratore di macro
    una volta creata la macro la visioni con l'editor vba e vedu quello che ti costruisci
    per quanto rigurada il signifiato di ogni riga sarebbe meglio che cominciassi a visionare il corso base di vba presente nel forum.

    di Visitorsvba
    In che punto del codice devo inserirlo?
    'inserimento dati nell'archivio clienti
    irisposta = msgbox("vuoi inserire " _
    & txtboxcognomenome.value & " nell'archivio clienti?", vbyesno)
    if irisposta = vbyes then
    foglio18.activate
    dim irow as integer
    irow = 2
    while cells(irow, 1).value <> ""
    irow = irow + 1
    wend
    worksheets("arclienti").cells(irow, 1) = ucase(txtboxcognomenome)
    worksheets("arclienti").cells(irow, 2) = ucase(txtboxresidenza)
    ...
    ...
    msgbox "ok dati inseriti sul foglio"
    ...
    ...

    di Enzo
    Subito dopo l'istruzione che scrive il testo nella cella

    di Visitorsvba
    Forse sbaglio qualcosa ma cosi non funziona
    dove l'errore???
    irisposta = msgbox("vuoi inserire " _
    & txtboxcognomenome.value & " nell'archivio clienti?", vbyesno)
    if irisposta = vbyes then
    foglio18.activate
    dim irow as integer
    irow = 2
    while cells(irow, 1).value <> ""
    irow = irow + 1
    wend
    worksheets("arclienti").cells(irow, 1) = ucase(txtboxcognomenome)
    worksheets("arclienti").cells(irow, 2) = ucase(txtboxresidenza)
    ...
    with selection
    .horizontalalignment = xlgeneral
    .verticalalignment = xlcenter
    .wraptext = true
    .orientation = 0
    .addindent = false
    .shrinktofit = false
    .mergecells = false
    end with
    selection.borders(xldiagonaldown).linestyle = xlnone
    selection.borders(xldiagonalup).linestyle = xlnone
    selection.borders(xledgeleft).linestyle = xlnone
    selection.borders(xledgetop).linestyle = xlnone
    with selection.borders(xledgebottom)
    .linestyle = xlcontinuous
    .weight = xlthin
    .colorindex = xlautomatic
    end with
    selection.borders(xledgeright).linestyle = xlnone
    msgbox "ok dati inseriti sul foglio"

    di Enzo
    Nelle true istruzioni gia' vedo che hai un blocco if senza la sua chiusura (end if)
    prova a inviare il file utilizzando la sezione scambio file e vediamo che si puo' fare

    di Enzo
    Eventualmente inserisci anche una descrizione

    di Visitorsvba
    Riscrivo il codice:
    'inserimento dati nell'archivio clienti
    irisposta = msgbox("vuoi inserire " _
    & txtboxcognomenome.value & " nell'archivio clienti?", vbyesno)
    if irisposta = vbyes then
    foglio18.activate
    dim irow as integer
    irow = 2
    while cells(irow, 1).value <> ""
    irow = irow + 1
    wend
    worksheets("arclienti").cells(irow, 1) = ucase(txtboxcognomenome)
    worksheets("arclienti").cells(irow, 2) = ucase(txtboxresidenza)
    ...altri dati simili a sopra
    with selection
    .horizontalalignment = xlgeneral
    .verticalalignment = xlcenter
    .wraptext = true
    .orientation = 0
    .addindent = false
    .shrinktofit = false
    .mergecells = false
    end with
    selection.borders(xldiagonaldown).linestyle = xlnone
    selection.borders(xldiagonalup).linestyle = xlnone
    selection.borders(xledgeleft).linestyle = xlnone
    selection.borders(xledgetop).linestyle = xlnone
    with selection.borders(xledgebottom)
    .linestyle = xlcontinuous
    .weight = xlthin
    .colorindex = xlautomatic
    end with
    selection.borders(xledgeright).linestyle = xlnone
    msgbox "ok dati inseriti sul foglio"
    end if
    end sub
    cosi facendo mi mette una linea solo sulla prima cella e non su tutta la riga

    di Visitorsvba
    L'esempio lo trovi su scambi ofiles

    di Enzo
    Scusa ma non ci siamo capiti
    quando ti viene richiesto un file di esempio e per avere il codice sul quale lavorare....
    .........tu hai inviato una foto del file excel????

    di Enzo
    Comunque ho simulato un qualcosa di simile e ti ho scritto il codice qui sotto
    ho creato una userform con una textbox (textbox1) e un commandbutton all'interno del quale ho inserito il comando descritto qui sotto
    il comando non fa altro che andare sul foglio excel, posizionarsi sulla cella a1 dove e' indicato il campo cognome o nome o quello che vuoi
    scendendo trova la prima riga vuota inserisce il contenuto della textbox e fa tutte le istruzioni che avevi chiesto
    ora adattala alle tue esigenze
    bye
     
    'VAI IN A1 DOVE HAIL IL CAMPO COGNOME
    Range("A1").Select
    'SCENDI FINO A TROVARE LA PRIMA RIGA VUOTA
    Do
    ActiveCell.Offset(1).Select
    Loop Until ActiveCell.Value = ""
    ActiveCell.Value = UserForm1.TextBox1.Value
    'ISTRUZIONE PER TESTO A CAPO
    ' E PER L'ALLINEAMENTO
    
    With Selection
                   .WrapText = True
                   .VerticalAlignment = xlCenter
               End With
    'SELEZIONA IL BORDO O LA LINEA IN BASSO
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeTop).LineStyle = xlNone
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Selection.Borders(xlEdgeRight).LineStyle = xlNone
    End Sub
    

    Grazie di Visitorsvba
    Grazie per la tua risposta e scusa se non ho mandato un file di esempio, ma quello che ho è l'intero progetto.

    comunque ho provato ma non funziona, forse perchè l'inserimento dati della userform va a finire in un'altro foglio (arclienti).vedi esempio precedente. mentre tu fai l'esempio sullo stesso foglio.
    si può adeguare?

    di Enzo
    Ti sposti sul foglio che vuoi e se non ho capito male nel tuo esempio e'
    sheets("foglio18").select
    range("a1").select

    di Visitorsvba
    Grazie per l'aiuto che mi stai dando.
    la riga la fa solo sul bordo inferiore di una cella e non di tutta la riga (cioè 3 colonne)

    come si fa?

    di Enzo
    Si in quanto il comando va sulla riga iniziale
    scende sino alla prima cella vuota inserisce in quella casella il testo e successivamente tira la riga allinea etc
    quando dai istruzione in un altra colonna es. quella a fianco e inserirai i nuovi dati alla fine gli fai fare la stessa cosa.
    il problema si risolveva se allegavi come ti ho gia' detto il file
    anche se e' un progetto lungo invialo con le spiegazioni che ti servono

    Domanda non pertinente di Edomar
    Mi avete aiutato per risolvere problemi excel e non ringrazierò mai abbastanza.

    mi faccio vivo qui perchè ho visto che ci sono interventi dei più esperti, anche se non sono in tema.

    domanda: dove posso trovare per access un sito simile a questo ? debbo accertare se in access è possibile ottenere il lampeggio celle sui reports.
    saluti. edo

    Enzo di Visitorsvba
    Ti allego un file di esempio.

    grazie ancora.

    di Visitorsvba
    Te ne allego un'altro per completare una parte che non riesco a fare.

    grazie

    di Enzo
    Ti ho inviato un file dal nome backup dove penso di aver risolto il discorso relativo al pulsante di backup
    per il primo dammi del tempo
    bye
    fa sapere se va bene

    di Visitorsvba
    Grazie gentilissimo.
    ti ho rimanda il file show 2.xls per farti vedere alcuni dettagli mancanti.

    grazie ciao

    di Visitorsvba
    Ok fatto per la data.
    comunque ti rimando il file per migliorare alcune cose.

    si chiama "formato + email + backup.xls"
    e le domande sono sul foglio.

    ciao e grazie 1000 per l'aiuto.

    6 un grande

    di Enzo
    Ti ho inviato un file che si chiama piu' fogli dove salvi piu' fogli lavoro
    bye

    di Visitorsvba
    Confermo che 6 un grande.
    ok funziona

    per completare il lavoro manca solo come mettere i bordi.
    vedi sempre quel file.

    ciao

    di Enzo
    Ti ho inviato un file che si chiama definitivo
    ogni volta che azioni il foglio1 nelle celle da 4 a 65000 per le colonne a b e c se incontra celle piene ti inserisce una linea in alto e una in basso
    quindi ti avevo cancellato un po di cose per controllarlo
    bye
    spero sia finito

    Grazie!!! di Visitorsvba
    Grazie 1000.
    rallanta un pò. comunque è ottimo.
    un ultima domanda: sui fogli all'attivazione ho inserito il seguente codice:

    private sub worksheet_activate()
    with activewindow
    .displayheadings = false
    .displayworkbooktabs = false
    end sub
    questioni di sucurezza sul file originale.

    adesso, come posso fare in modo che sul file di backup dove sono presenti quei fogli renderli "true" o dimmi tu un'alternativa.

    grazie di tutto

    Autoeleminazione di Visitorsvba
    Ahh!! un'altra cosa.
    un file xls alla sua chiusura si può eliminare automaticamente (cioè da codice) da solo?
    se si qual'è il codice vba e dove inserirlo?

    grazie grazie

    Incorpora("forms.commandbutton.1";"") di Visitorsvba
    Avrei risolto mettente sul foglio elettronico un pulsante di comando nascosto per default che appare quando il nome del file.xls di backup contenente il foglio è diverso da quello originale.

    da codice come si fa a far apparire un pulsante di comando(impostato: visible=false)che si trova sul foglio?

    mi aiuti?

    Testo a capo in celle unite di Visitorsvba
    Buongiorno a tutti,
    come faccio a fare da worksheet_activate) testo a capo in celle unite?

    l'esempio in scambio files:

    fax-testo a capo in celle unite.xls

    Importazione dati da file.xls esterno di Visitorsvba
    Buongiorno ragazzi,
    grazie all'ottimo aiuto di enzo ho creato un pulsante che mi creava un file di backup con dentro i fogli da salvare.

    adesso vorrei fare il contrario, cioè un pulsante che ripristina i dati del file backup sul foglio del file origine.

    come posso fare?

    Nuova discussione di Visitorsvba
    Scusate ragazzi ma ho aperto una nuova discussione sui miei 3 punti precedenti altrimenti non si capiva.

    grazie a tutti per le risposte e sopratutto (negli ultimi giorni) ad enzo e al moderatore che sono stati di grande aiuto e cordiali con me.

    un saluto