Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mascherina con radio buttons

7 views
Skip to first unread message

deltaquattro

unread,
Nov 6, 2009, 5:28:28 AM11/6/09
to
Ciao,

sto scrivendo una subroutine in VB 6.5 per Excel 2000. Leggo un array
di stringhe da un file corrispondenti ai nomi di alcuni casi che
l'utente può scegliere. Voglio creare una maschera con dei radio
button (forse in VB si chiamano Option Button?) per permettere
all'utente di scegliere uno solo fra i casi letti nel file. Il numero
di radio button dunque è variabile (sempre pochi, dell'ordine di una
decina) ed anche la stringa di fianco ai button. Mi date una mano?
Tenete conto che sono un quasi-neofita-autodidatta, e che la cosa non
dev'essere particolarmente robusta, è un'applicazione che sto
scrivendo per me e per dei colleghi qui in azienda ma per uso interno,
non si tratta di roba che va venduta a un cliente! Grazie mille,

ciao

Sergio

Luca D

unread,
Nov 6, 2009, 6:13:53 AM11/6/09
to

Quando dici "VB 6.5 per Excel 2000" non sono sicuro di capire a che ti
riferisci, quindi do per scontato che tu parli di VBA integrato in
Excel.

La cosa più semplice, nel caso che descrivi, è usare un banale
ListBox, invece di una serie di Option... lo carichi con le stringhe,
e lui già per sua natura prevede un numero variabile di elementi e la
possibilità di selezionarne uno solo, per default.
Si può fare anche come chiedi tu, generando i controlli Option
dinamicamente, però è un po' più complicato e devi anche eventualmente
preoccuparti di visualizzarli correttamente, non sapendo a priori lo
spazio che occupano sulla finestra.

deltaquattro

unread,
Nov 6, 2009, 7:38:34 AM11/6/09
to
On 6 Nov, 12:13, Luca D <antanise...@yahoo.it> wrote:
> On 6 Nov, 11:28, deltaquattro <deltaquat...@gmail.com> wrote:
>
> > Ciao,
>
> > sto scrivendo una subroutine in VB 6.5 per Excel 2000. Leggo un array
> > di stringhe da un file corrispondenti ai nomi di alcuni casi che
> > l'utente può scegliere. Voglio creare una maschera con dei radio
> > button (forse in VB si chiamano Option Button?) per permettere
> > all'utente di scegliere uno solo fra i casi letti nel file. Il numero
> > di radio button dunque è variabile (sempre pochi, dell'ordine di una
> > decina) ed anche la stringa di fianco ai button. Mi date una mano?
> > Tenete conto che sono un quasi-neofita-autodidatta, e che la cosa non
> > dev'essere particolarmente robusta, è un'applicazione che sto
> > scrivendo per me e per dei colleghi qui in azienda ma per uso interno,
> > non si tratta di roba che va venduta a un cliente! Grazie mille,
>
> Quando dici "VB 6.5 per Excel 2000" non sono sicuro di capire a che ti
> riferisci, quindi do per scontato che tu parli di VBA integrato in
> Excel.

Sì, sarà questo: io ho solo letto i nomi delle versioni di VB ed Excel
nelle finestre Help>About Microsoft Excel e Help>About Microsoft
Visual Basic.

>
> La cosa più semplice, nel caso che descrivi, è usare un banale
> ListBox, invece di una serie di Option... lo carichi con le stringhe,
> e lui già per sua natura prevede un numero variabile di elementi e la
> possibilità di selezionarne uno solo, per default.
> Si può fare anche come chiedi tu, generando i controlli Option

[..]

No, no, va benissimo la maniera semplice anche perchè già così non sto
capendo cosa devo fare. Ho provato a leggere l'help in Visual Basic
per ListBox, Microsoft Forms Object Model Overview, Controls, ecc. ma
non mi è chiaro cosa devo scrivere nella Sub . Ti faccio un esempio,
anche per farti capire cosa so e cosa non so: se volessi usare la
funzione MsgBox per mostrare i nomi dei casi letti, scriverei

MsgBox Prompt:="Test cases found in file: " & Path & '" are: "
& TestCases, Title:="Test Cases"

dove Path è una string che contiene il path del file letto, e
TestCases è un array di stringhe. Questa cosa non funziona perchè non
posso passare un array di stringhe in Prompt, quindi dovrei fare una
cosa del genere concatenare tutte le stringhe contenute nell'array
TestCases (magari separate da spazi!) in un'unica stringa, e passare
quella in Prompt. Comunque, anche se faccio così, ancora non ho dato
all'utente la possibilità di selezionare un Test Case. Quindi subito
dopo uso la funzione InputBox:

ChosenTestCase = InputBox _
(Prompt:="Choose one of the test cases found:")

Ma è una maniera davvero brutta di fare 'sta cosa. Posso unificare i
due passaggi con questa ListBox? Che istruzioni devo usare? L'help mi
dice di mettere una ListBox nelle Declarations di una form, ma cos'è
questa form? Un'altra unità di programma? Come la rendo accessibile
alla mia Sub? Grazie mille x l'aiuto,

ciao

Sergio

Luca D

unread,
Nov 6, 2009, 5:28:40 PM11/6/09
to
On Nov 6, 1:38 pm, deltaquattro <deltaquat...@gmail.com> wrote:
[...]

> dove Path è una string che contiene il path del file letto, e
> TestCases è un array di stringhe.
[...]

> L'help mi
> dice di mettere una ListBox nelle Declarations di una form, ma cos'è
> questa form? Un'altra unità di programma? Come la rendo accessibile
> alla mia Sub? Grazie mille x l'aiuto,

La form è il termine con cui VB chiama una finestra disegnata da te;
in Excel puoi crearla aprendo l'editor di VB e scegliendo "Inserisci
UserForm"

Ora, se proprio non hai mai lavorato con l'editor di Vb in questo
modo, con finestre, oggetti ed eventi, è un po' complicato spiegarti
tutto a parole... ho fatto un piccolo esempio che fa una cosa simile a
quella che chiedi (esegui "macro1" per una dimostrazione, api invece
l'editor di VB, col l'help sottomano, per studiare il codice); vedi un
po' se ti aiuta

Lo puoi scaricare qui: http://www.megaupload.com/?d=S3ZI62WI

deltaquattro

unread,
Nov 9, 2009, 8:02:46 AM11/9/09
to antan...@yahoo.it

Ciao, Luca,

grazie mille x la risposta, sei gentilissimo: dopo aver avuto certe
inqualificabili risposte su altri ng italiani, iniziavo a pensare che
solo su quelli inglesi ci fosse gente davvero desiderosa di aiutare i
principianti....Io non riesco a scaricare la macro perchè il firewall
della mia azienda blocca il link. Potresti spedirmi la macro x mail?
L'indirizzo è valido. Spero di poter ricambiare in qualche modo!

Ciao

Sergio

Mauro Gamberini

unread,
Nov 9, 2009, 9:56:09 AM11/9/09
to
Ciao, Luca,

grazie mille x la risposta, sei gentilissimo: dopo aver avuto certe
inqualificabili risposte su altri ng italiani, iniziavo a pensare che
solo su quelli inglesi ci fosse gente davvero desiderosa di aiutare i
principianti....

*************************************************

Mostriamole le *inqualificabile risposte*, no?

http://groups.google.it/group/microsoft.public.it.office.excel/browse_thread/thread/90b5b8a5b4eb9529

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


deltaquattro

unread,
Nov 12, 2009, 11:11:47 AM11/12/09
to antan...@yahoo.it

Ciao, Luca,

grazie per avermi spedito il file! Ho capito il tuo esempio e lo sto
adattando al mio caso, ma ho un problema: io non vorrei che la
UserForm leggesse lei stessa il file, poichè è molto complesso ed ho
già fatto il parsing nel programma principale (che corrisponderebbe al
tuo Macro1), ergo vorrei passare direttamente alla UserForm i test
case fra cui l'utente può scegliere, e poi passare al main la scelta
fatta dall'utente. Ho provato a fare così: ChoseOpCond sarebbe la tua
variabile Scelta, e OpCond è l'array di stringhe che il mio main ha
creato, facendo il parsing del file di testo.

Option Explicit

Public ChosenOpCond As String

Private Sub UserForm_Initialize(OpCond() As String)

Dim i As Long

'Load User Form
For i = 1 To UBound(OpCond)
ListBox1.AddItem OpCond(i)
Next

End Sub

ecc.

Ma sembra non funzionare, perchè dal mio main non riesco a chiamare
UserForm_Initialize(OpCond). C'è un modo per passare variabili fra la
UserForm ed il main? Grazie ancora,

ciao

Sergio

Luca D

unread,
Nov 13, 2009, 6:25:46 AM11/13/09
to
On 12 Nov, 17:11, deltaquattro <deltaquat...@gmail.com> wrote:

Ho visto prima la mail di questo messaggio, ho già risposto li.

A sto punto è' meglio se mandi i messaggi solo qui, altrimenti si
frammenta tutta la discussione e poi non si capisce più nulla nel
thread

0 new messages