Discussione: Corso VBA
Visualizza messaggio singolo
Vecchio 21-06-2014, 19.51.55   #40
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
Alexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tuttiAlexsandra è conosciuto da tutti
Impostazioni delle proprietà dei controlli



Mentre viene sviluppata un'applicazione in VBE (ambiente Visual Basic) viene definita come fase di progettazione (Design Time) il momento in cui si creano Form, si aggiungono controlli e si impostano le proprietà dei vari oggetti, mentre invece si definisce fase di esecuzione (Run-Time) il momento in cui il codice viene eseguito e l’applicazione è in esecuzione.

Durante il periodo di Run-Time lo sviluppatore interagisce con l'applicazione, proprio come un utente e il codice non può essere manipolato, mentre eventuali manipolazioni nella fase di progettazione non sono permanenti. Per esempio se si aggiunge un controllo CheckBox nel codice utilizzando il metodo Add Method [Set ctrl = Controls.Add("Forms.CheckBox.1")] il controllo apparirà una volta che si manda in esecuzione la UserForm, ma quando si termina l’esecuzione e si torna al VBE, l'oggetto CheckBox non è presente, allo stesso modo, se si imposta la Caption di un controllo OptionButton nel codice, viene visualizzato quando viene eseguita la UserForm, ma tornerà al suo aspetto originale quando si termina l’esecuzione. In sostanza la struttura ControlTipText si trova in fase di progettazione, ma è visibile sul controllo unicamente durante la fase di Run-Time.


Impostazione delle proprietà dei controlli
Se il codice è in una procedura nel modulo di codice della Form, si può utilizzare la sintassi: Controlname.Property = Setting/Value, ma se il codice è in un modulo standard o nel modulo di codice di un Form diverso, la sintassi diventa: UserFormName.Controlname.Property = Setting/Value. Alcuni Esempi di sintassi

Label1.Font.Name = "Arial"
Label1.ForeColor = RGB (255, 255, 0)
OptionButton1.BackColor = 255
CheckBox1.Value = false
CheckBox1.Alignment = fmAlignmentLeft
TextBox1.MultiLine = True
TextBox1.WordWrap = True
TextBox1.ScrollBars = 2
OptionButton1.AutoSize = True
Me.TextBox1.Enabled = False
TextBox1.TextAlign = fmTextAlignLeft
TextBox1.Text = "Ciao"
CommandButton1.Left = 50
TextBox1.MaxLength = 5


Proprietà Name
Si può utilizzare la proprietà Name per specificare un nome per un controllo o per specificare il nome del font del carattere utilizzato nella parte di testo di un controllo. La proprietà Name in una Form può essere impostata solo in fase di progettazione e non può essere impostata in fase di esecuzione, inoltre per i controlli può essere impostata sia in fase di progettazione o in fase di esecuzione, ma se si aggiunge un controllo in fase di progettazione, il suo nome non può essere modificato in fase di esecuzione. In genere, il nome predefinito del primo CheckBox creato è CheckBox1, il nome predefinito del secondo CheckBox sarà CheckBox2, e così via, anche per gli altri controlli.

E’ possibile modificare il nome di un controllo cliccando su "Name" nella finestra delle Proprietà, ricordando che il nome deve iniziare con una lettera, può avere qualsiasi combinazione di lettere, numeri o underscore, non può avere spazi o simboli e può avere una lunghezza massima di 40 caratteri. Potrebbe essere una buona idea utilizzare un prefisso di 3 lettere in minuscolo, per individuare il rispettivo controllo, e i caratteri che seguono il prefisso possono essere caratteristici per una più facile leggibilità. I prefissi comunemente utilizzati per diversi controlli sono: frm per UserForm; LBL per etichette; txt per TextBox; CMB per ComboBox; lst per ListBox; chk per CheckBox; opt per OptionButton; Fra per Frame; cmd per CommandButton; TBS per TabStrip; RFE per RefEdit; e così via.


La Proprietà Caption
Caption è il testo che descrive e identifica una Form o un controllo e verrà visualizzato nell'intestazione della Form, o di qualsiasi altro controllo, e può essere impostata nella finestra Proprietà o con il codice usando questa Sintassi: object.Caption = String


Le Proprietà Height e Width
L’altezza e la larghezza viene misurata in punti e queste proprietà sono applicabili sia a un oggetto Form che a tutti i controlli disponibili. È possibile inserire manualmente l'altezza e la larghezza nella finestra Proprietà, e per queste proprietà, VBA accetta solo valori che sono maggiori o uguali a zero, e possono essere impostate nella finestra Proprietà o con il codice VBA con la sintassi: object.Height = Number Object.Width = Number. È inoltre possibile ridimensionare un controllo manualmente con il mouse, quando viene selezionato il puntatore del mouse cambierà aspetto presentandosi come una freccia a due punte e il controllo mostrerà le maniglie di regolazione che sono situate negli angoli e a metà del controllo stesso e posizionando il cursore su una qualsiasi di queste maniglie e cliccando su di essa si possono modificare le dimensioni del controllo trascinando il cursore per portarlo alla dimensione desiderata, che una volta raggiunta si rilascia il pulsante del mouse


Le Proprietà Left e Top
La proprietà Left imposta la distanza tra il bordo sinistro del controllo e il bordo sinistro della Form che lo contiene, mentre invece la proprietà Top imposta la distanza tra il bordo superiore del controllo e il bordo superiore della Form e per entrambi i controlli la distanza è impostata in pixel, inoltre è possibile inserire manualmente le proprietà Left e Top nella finestra Proprietà tenendo presente che queste proprietà sono applicabili a tutti i controlli. Se il valore di Left o Top è impostato a zero, il controllo apparirà sul bordo sinistro o il bordo superiore della Form che lo contiene, e specificando un valore minore di zero in una di queste proprietà verrà tagliata una porzione del controllo riducendone la visibilità nel modulo. Queste proprietà possono essere impostate con il codice VBA con questa Sintassi: object.Left = Number object.Top = Number .


La Proprietà Value
Questa proprietà determina lo stato di selezione di un controllo o specifica il contenuto dello stesso ed è applicabile a tutti i controlli tranne Label, Frame e Image. Per quanto riguarda i controlli CheckBox, OptionButton e ToggleButton, impostando un valore di -1 (equivale a True), indica che il controllo è selezionato, un valore 0 (equivale a False), indica che il controllo è deselezionato e un valore Null indica che il controllo non è né selezionato né cancellato, e in questo caso apparirà ombreggiato. Per i controlli ScrollBar e SpinButton, la proprietà Value indica il loro valore attuale, che è un numero intero compreso tra il valore minimo e massimo specificati nelle proprietà Max e Min. Per i controlli ComboBox e ListBox (Value non può essere utilizzato con un ListBox a selezione multipla), rappresenta il valore della cella attualmente selezionata, mentre per un controllo CommandButton, equivale a un valore booleano (True o False) che indica se è stato scelto il comando e l’impostazione predefinita è False e se è impostato a True (può essere fatto solo con il codice VBA) richiamerà l'evento Click del pulsante. Per un controllo Multipage, la proprietà Value è impostata solo con il codice VBA ed è rappresentata da un numero Intero che indica se la pagina corrente è attiva, ricordando che le pagine sono numerate a partire da zero (0). Per un controllo TextBox, si riferisce al testo nella casella di testo e la proprietà Value può essere impostata nella finestra Proprietà (fatta eccezione per controlli CommandButton e Multipage) o con il codice VBA. Sintassi: Object.Value = Variant


La Proprietà Accelerator
Questa proprietà è applicabile ai controlli Label, CheckBox, OptionButton, ToggleButton, CommandButton e Multipage, imposta la chiave per accedere a un controllo, ed è indicato come la chiave di accesso (o tasto di scelta rapido) che è costituita da un singolo carattere, che premuto in combinazione con e dopo il tasto Alt è usato come scorciatoia e se usato per un controllo avvia l'evento Click. Per fare clic su un pulsante di comando in una Form, il tasto di scelta rapida può essere impostato come lettera "E" e premendo Alt + E si avvia l’evento click. Nel caso in cui Accelerator è impostato per una Label, il controllo successivo che segue la Label nell'ordine di tabulazione riceve il Focus (ma non l'esecuzione dell’evento Click). Inoltre si tenga presente che Il carattere utilizzato come valore Accelerator è key-sensitive, il che significa che l'impostazione della chiave avviene come lettera P equivale anche alla lettera p perché vengono inserite premendo lo stesso tasto.


La Proprietà Alignment
Questa proprietà è applicabile ai controlli CheckBox, OptionButton e ToggleButton e specifica come una Caption apparirà rispetto al controllo. Ci sono due impostazioni:
  • fmAlignmentLeft (valore 0) – La Caption appare a sinistra del controllo
  • fmAlignmentRight (valore 1) - Questa è l'impostazione di default in cui la Caption viene visualizzata a destra del controllo.
Si tenga presente che il controllo ToggleButton ha Alignment come una delle sue proprietà, ma è disabilitato e non può essere specificato per questo controllo e Il testo della Caption è sempre allineato a sinistra.


La Proprietà AutoSize
Questa proprietà è applicabile ai controlli Label, TextBox, ComboBox, CheckBox, OptionButton, ToggleButton, CommandButton, Image e RafEdit ed è rappresentata da un valore booleano (True o False) che specifica se il contenuto da visualizzare del controllo viene ridimensionato automaticamente oppure no. Se AutoSize viene posta a TRUE, si ridimensiona automaticamente il controllo, mentre impostandola a FALSE (opzione predefinita) mantiene la dimensione del controllo e se il contenuto supera l'area del controllo viene tagliato. Per i controlli TextBox e ComboBox, AutoSize si applica al testo visualizzato, mentre per il controllo Image, AutoSize vale per l'immagine visualizzata, mentre per altri controlli si applica alla Caption, mentre le impostazioni per il controllo TextBox sono:
  • Se il TextBox è a linea singola, AutoSize ridimensiona la larghezza del TextBox alla lunghezza del testo
  • Se il TextBox è MultiLinea, senza testo, AutoSize ridimensiona la larghezza per visualizzare una singola lettera e ridimensiona l'altezza per visualizzare l'intero testo
  • Se la TextBox è MultiLine con il testo, AutoSize non cambia la larghezza del TextBox e ridimensiona l'altezza per visualizzare l'intero testo.

La Proprietà BackColor
Questa Proprietà si applica a tutti i controlli e Form ed imposta il colore di sfondo. Per il controllo Multipage la proprietà può essere impostata solo con il codice VBA


La Proprietà BackStyle
BackStyle è applicabile ai controlli Label, TextBox, ComboBox, CheckBox, OptionButton, ToggleButton, CommandButton, Image e RafEdit e determina se lo sfondo dei controlli sarà opaco o trasparente. Ha due impostazioni:
  • fmBackStyleTransparent (valore 0) per sfondo trasparente, in cui tutto lo sfondo del controllo è visibile
  • fmBackStyleOpaque (valore 1) per lo fondo opaco, in cui nulla è visibile sullo sfondo del controllo e questo è anche il default.
Se la proprietà BackStyle (per i controlli) è impostato su fmBackStyleOpaque la proprietà BackColor non avrà nessun effetto.


La Proprietà BorderColor
Questa proprietà è applicabile alle Form e ai controlli Label, TextBox, ComboBox, ListBox, Frame, Image e RafEdit e imposta il colore del bordo. Se nella proprietà BorderStyle si imposta il valore fmBorderStyleNone, questa proprietà non avrà alcun effetto, in quanto la proprietà BorderStyle definisce i colori del bordo utilizzando la proprietà BorderColor , mentre la struttura SpecialEffect utilizza esclusivamente colori di sistema (che fanno parte del Pannello di controllo di Windows) per definire i colori del bordo.


La Proprietà BorderStyle
Questa proprietà è applicabile alle Form e controlli Label, TextBox, ComboBox, ListBox, Frame, Image e RafEdit e specifica il tipo di bordo per un oggetto (controllo o Form). Ha due impostazioni:
  • fmBorderStyleNone (valore 0) per nessun bordo
  • fmBorderStyleSingle (valore 1) per un bordo a linea singola.
Da ricordare che Form, Label, TextBox, ComboBox, ListBox e Frame hanno il valore di default pari a 0, mentre il valore predefinito per un'immagine è 1. BorderStyle definisce i colori dei bordi con la proprietà BorderColor e non è possibile utilizzare contemporaneamente BorderStyle e SpecialEffect per specificare il bordo di un controllo, inoltre se la proprietà SpecialEffect per un Frame è impostata a zero, la proprietà BorderStyle viene ignorata.


La Proprietà ControlSource
Questa proprietà è applicabile ai controlli TextBox, ComboBox, ListBox, CheckBox, OptionButton, ToggleButton, ScrollBar e SpinButton e corrisponde a una cella o un campo (intervallo di celle) che viene utilizzato per impostare o conservare la proprietà Value di un controllo. Cambiando il valore del controllo si aggiorna automaticamente la cella collegata e un cambiamento nella cella collegata aggiornerà il valore del controllo. Se nella cella A1 viene inserita la proprietà ControlSource di un CheckBox, e se la cella A1 in ActiveSheet contiene TRUE, il CheckBox apparirà selezionato all'attivazione del modulo e se si deseleziona l'opzione, la cella A1 cambierà il suo contenuto in FALSE. In una ListBox in cui il ControlSource menziona Foglio1! D2, il valore nella BoundColumn della riga selezionata vengono memorizzati nella cella D2 del Foglio1, mentre invece in una TextBox in cui il ControlSource menziona Foglio3! F2, il testo o il valore nella TextBox vengono memorizzati nella cella F2 del Foglio3 e se la cella F2 non contiene nessun testo, questo apparirà nella TextBox all'attivazione della Form. Il valore predefinito è una stringa vuota che indica che la proprietà ControlSource non è stata impostata.


La Proprietà ControlTipText
E’ applicabile a tutti i controlli e specifica il testo visualizzato quando l'utente posiziona il mouse su un controllo. E utile nel dare consigli o chiarimenti per l'utente sull'utilizzo del controllo. Il valore predefinito è una stringa vuota che indica che non verrà visualizzato alcun testo.


La Proprietà Enabled
Questa Proprietà si applica a tutti i controlli e Form e rappresenta un valore booleano (True o False) che specifica se il controllo è attivo e può rispondere a eventi generati dall'utente, (cioè l'utente può interagire con il controllo tramite mouse, i tasti o tasti di scelta rapida). Il valore predefinito è True, che indica che il controllo è attivo, mentre un valore False indica che l'utente non può interagire con il controllo. Il controllo è generalmente accessibile tramite un codice anche nel caso il valore sia impostato su False. Se Enabled è impostato su False, il controllo è inattivo (tranne che per le immagini), mentre se Enabled è impostata su false per un Form o un Frame, tutti i controlli che contengono sono disabilitato. La proprietà Enabled di una TextBox è particolarmente utile quando non si desidera consentire all'utente di digitare direttamente nella casella di testo, ma deve essere riempito solo tramite la selezione effettuata dall'utente in altro controllo, ad esempio da un ListBox.


La Proprietà Locked
Questa proprietà è applicabile ai controlli TextBox, ComboBox, ListBox, CheckBox, OptionButton, ToggleButton, CommandButton e RafEdit e rappresenta un valore booleano (True o False) che specificare se il controllo è modificabile o meno. Il valore TRUE indica che non è modificabile, mentre il valore predefinito è False in cui il controllo può essere modificato.

Alcuni esempi di utilizzo delle proprietà Enabled e Locked in combinazione:
  • Se Enabled è True e Locked è False: il controllo risponde agli eventi generati dall'utente e appare normalmente, i dati possono essere copiati e modificati nel controllo.
  • Se Enabled è True e Locked è True, il controllo risponde agli eventi generati dall'utente e appare normalmente, i dati possono essere copiati, ma non modificati nel controllo.
  • Se Enabled è False (indipendentemente dal valore di Locked), il controllo non può rispondere a eventi generati dall'utente e viene visualizzato in grigio, i dati non possono essere né copiati né modificati nel controllo.

L'Oggetto Font
Questa proprietà si applica a Form e a tutti i controlli tranne ScrollBar, SpinButton e Image e determina il tipo di carattere utilizzato in un controllo o Form. È possibile specificare il nome del font, impostare lo stile del carattere (normale, corsivo, grassetto, etc.), o sottolineare il testo barrato, e regolare la dimensione del carattere. Per i controlli TextBox, ComboBox e ListBox, il tipo di carattere del testo visualizzato è impostato, mentre per altri controlli è impostato il carattere della Caption. L'impostazione Font di una Form imposta automaticamente il carattere di tutti i controlli, se posta all’inizializzazione della Form, ma non modifica il tipo di carattere di questi controlli se fossero già presenti per i quali sarà necessario reimpostare il carattere di ogni singolo controllo separatamente. La proprietà Font per un controllo Multipage può essere utilizzata solo con il codice VBA.


La Proprietà ForeColor
Questa proprietà si applica a Form e a tutti i controlli tranne Image e specifica il colore di primo piano, cioè il colore del testo visualizzato. Per quanto riguarda i controlli Font, ForeColor determina il colore del testo, mentre in un Frame, ForeColor determina il colore della Caption e in una ScrollBar o SpinButton, ForeColor determina il colore delle frecce. Da notare che l'impostazione ForeColor di una Form imposta automaticamente la proprietà ForeColor dei controlli Label, CheckBox, OptionButton, Frame, Multipage e TabStrip se inseriti nell’inizializzazione della Form stessa, ma non cambierà la proprietà ForeColor di questi controlli se fossero già presenti, per i quali sarà necessario reimpostarla per ogni singolo controllo separatamente. La proprietà ForeColor per un controllo Multipage può essere utilizzata solo con il codice VBA.


La Proprietà MouseIcon
Questa proprietà è applicabile a Form e a tutti i controlli, ad eccezione di Multipage e assegna un'immagine a un controllo che viene visualizzato quando l'utente sposta il mouse su tale controllo. Image viene assegnato specificando il percorso e il nome del file dove è collocata l’immagine e per utilizzare la struttura MouseIcon è necessario che la proprietà MousePointer sia impostata su fmMousePointerCustom (valore 99).


La Proprietà MousePointer
Questa proprietà è applicabile a Form e a tutti i controlli, ad eccezione di Multipage e specifica che tipo di puntatore del mouse sarà visibile quando l'utente sposta il mouse sopra un controllo. Ci sono 15 impostazioni:
  • fmMousePointerDefault (valore 0) - puntatore standard, è il valore di default
  • fmMousePointerArrow (valore 1) - freccia
  • fmMousePointerCross (valore 2) - puntatore a croce
  • fmMousePointerIBeam (valore 3) - I-Beam
  • fmMousePointerSizeNESW (valore 6) - freccia a due punte punta nord-est e sud-ovest
  • fmMousePointerSizeNS (valore 7) - freccia a due punte punta nord e sud
  • fmMousePointerSizeNWSE (valore 8) - freccia a due punte punta nord-ovest e sud-est
  • fmMousePointerSizeWE (valore 9) - doppia freccia che punta a ovest e ad est
  • fmMousePointerUpArrow (valore 10) - freccia
  • fmMousePointerHourglass (valore 11) - clessidra
  • fmMousePointerNoDrop (valore 12) - cerchio con una linea diagonale, che appare come un simbolo "Not", che indica un controllo non valido
  • fmMousePointerAppStarting (valore 13) - freccia e clessidra
  • fmMousePointerHelp (valore 14) - freccia e il punto interrogativo
  • fmMousePointerSizeAll (valore 15) - freccia a quattro punte, rivolto verso nord, sud, est e ovest
  • fmMousePointerCustom (valore 99) - l'immagine specificata dalla struttura MouseIcon

La Proprietà Picture
Questa proprietà è applicabile a Form e controlli Label, CheckBox, OptionButton, ToggleButton, Frame, CommandButton, Multipage e Image e specifica l'immagine da visualizzare in un controllo, specificando il percorso e il nome del file, per rimuovere l'immagine si deve premere CANC sul valore della proprietà. Per i controlli con Caption, è possibile specificare la posizione dell'immagine utilizzando la proprietà PicturePosition mentre per altri controlli e Form, si deve utilizzare la proprietà PictureAlignment per specificare la posizione dell'immagine e utilizzare la proprietà PictureSizeMode per specificare la modalità (dimensioni, scala, etc.) per visualizzare l'immagine.


La Proprietà PicturePosition
Questa proprietà è applicabile ai controlli Label, CheckBox, OptionButton, ToggleButton e CommandButton e specifica dove deve comparire l'immagine nel controllo. Ci sono 3 impostazioni in un formato in cui la stringa fmPicturePosition è seguita dalla posizione dell'immagine rispetto alla sua voce e al successivo allineamento della Caption relativa all'immagine, cioè.
  • fmPicturePositionLeftTop - l'immagine viene visualizzata a sinistra del titolo e la Caption è allineata con la parte superiore del quadro
  • fmPicturePositionCenter - Sia l'immagine che la Caption sono concentrati nel controllo e la Caption è sulla parte superiore del quadro.
  • fmPicturePositionAboveCenter (valore 7) – E’ il valore predefinito e l'immagine appare sopra la Caption e la stessa è centrata sotto l'immagine.

La Proprietà SpecialEffect
Questa proprietà è applicabile a Form e controlli Label, TextBox, ComboBox, ListBox, CheckBox, OptionButton, ToggleButton, Frame, Image e RafEdit e determina come appare visivamente il controllo. Per un CheckBox, OptionButton, o ToggleButton, le due impostazioni sono:
  • fmButtonEffectFlat (valore 0)
  • fmButtonEffectSunken (valore 2) - di default per CheckBox e OptionButton.
Per altri controlli sono applicabili cinque impostazioni che sono:
  • fmSpecialEffectFlat (valore 0) - default per Form e i controlli Image e Label
  • fmSpecialEffectRaised (valore 1)
  • fmSpecialEffectSunken (valore 2) - di default per i controlli TextBox, ComboBox e ListBox
  • fmSpecialEffectEtched (valore 3) - di default per Frame
  • fmSpecialEffectBump (valore 6).
L'aspetto visivo di ogni impostazione è auto-esplicativo e può essere piatto, in rilievo, incassato, inciso e Bump.
Anche se ToggleButton ha SpecialEffect come una delle sue proprietà, è disabilitato e non può essere specificato, inoltre non è possibile utilizzare contemporaneamente sia la proprietà BorderStyle e SpecialEffect per specificare il bordo per un controllo in quanto per uno dei due con valore diverso da zero imposterà automaticamente l'altra proprietà a zero. Se la proprietà SpecialEffect per un Frame è impostato a zero, la proprietà BorderStyle viene ignorata.


La Proprietà TabIndex
Questa proprietà è applicabile a tutti i controlli tranne Image e TabIndex rappresenta la posizione del controllo nell'ordine di tabulazione di un Form quando l'utente preme il tasto Tab. Il valore di indice è espresso come un valore Integer, indicando con 0 la prima posizione nell'ordine di tabulazione e il valore più alto dell'Indice sarà uno in meno del numero di controlli nella Form, a cui la proprietà TabIndex è applicabile. L’immissione di un valore di indice inferiore a zero darà un errore e un valore superiore al più alto possibile resetterà al valore più alto, e ogni controllo avrà un valore di indice univoco.


La Proprietà TabStop
Questa proprietà è applicabile a tutti i controlli tranne Label e Image ed è rappresentata da un valore booleano (True o False) che specifica se il controllo può essere selezionato con il tasto Tab. Il valore True è di default, e imposta il controllo come una tabulazione, mentre invece il valore False ignora il controllo, ma la sua posizione nell'ordine di tabulazione (come specificato nella proprietà TabIndex) rimane intatto.


La Proprietà Visible
Questa Proprietà si applica a tutti i controlli e rappresenta un valore booleano (True o False) che è impostato per visualizzare o nascondere un controllo. Il valore di default è True, in cui il controllo è visibile. Questa proprietà è particolarmente utile in cui in seguito a una condizione è possibile attivare un controllo nascosto che altrimenti non si potrebbe vedere nella Form.


La Proprietà WordWrap
Questa proprietà è applicabile ai controlli Label, TextBox, CheckBox, OptionButton, ToggleButton, CommandButton e RafEdit ed è rappresentata da un valore booleano (True o False) che specifica se il testo di un controllo andrà a capo alla riga successiva. Il valore di default è True e se la proprietà MultiLine di un controllo è impostata su False, WordWrap viene ignorato nei controlli che supportano entrambe queste proprietà vale a dire TextBox.
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando