Risultati da 1 a 19 di 19

Discussione: Macro per inserimento ActiveX su foglio di lavoro



  1. #1

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Macro per inserimento ActiveX su foglio di lavoro

    Altra richiesta di aiuto.

    Avrei la necessità di:

    1) inserire degli OptionButton (ActiveX) dalla cella B1 alla cella B10
    2) impostare la proprietà LinkedCell di ciascun OptionButton alla cella che è alla sua sinistra (cioè A1, A2, etc.)
    3) Impostare la proprietà GroupName a "Gruppo1" per i primi cinque e a "Gruppo2" per gli altri (anche se il numero dei gruppi può essere variabile)

    I controlli dovrebbero essere allineati al centro di ogni cella e incolonnati in colonna B.

    Mi rendo conto di aver chiesto un qualcosa di problematico; non so se si riesce a fare tutto con il VBA: l'inserimento dei controlli sicuramente si perché l'ho fatto ma per l'impostazione delle proprietà non mi riesce.

    Io ho provato così

    Codice: 
    ActiveSheet.Shapes("OptionButton1").LinkedCell = Range("a1")
    ma mi dà errore di run-time 438 "Proprietà o metodo non supportati dall'oggetto".

    Comunque confido e ringrazio in anticipo.

    Alfredo

  2. #2

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Ciao Alfredo,

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    ... non so se si riesce a fare tutto con il VBA: l'inserimento dei controlli sicuramente si perché l'ho fatto ...
    visto che qualcosa hai già fatto, collabora e posta il file di esempio :286:
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  3. #3

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Marco sono tentativi minimi fatti con il registratore di macro e questo è il codice che è venuto fuori

    Codice: 
    Sub Macro2()
        ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _
            DisplayAsIcon:=False, Left:=48, Top:=0.75, Width:=37.5, Height:=14.25 _
            ).Select
    End Sub
    che funziona nel senso che il pulsante di opzione viene inserito; per la centratura e l'allineamento dei controlli credo si debba "giocare" (ma credo che la cosa non sarà per nulla facile) sui parametri Left e Top ma come dicevo prima non ho proprio idea di come si possa fare per impostare le proprietà degli OptionButton.

    Se, ad esempio, si avesse la necessità di inserire 200 OptionButton sul foglio è impensabile fare tutto a mano; c'è la possibilità di far tutto con il VBA (ovviamente 200 è un numero detto a caso).

    Grazie.

  4. #4

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    edit, letto male.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  5. #5
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1124
    Versione Office
    2010
    Likes ricevuti
    146
    Likes dati
    1

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Codice: 
    Sub Macro2()
    For y = 1 To 100 Step 20
        ActiveSheet.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _
            DisplayAsIcon:=False, Left:=48, Top:=y, Width:=37.5, Height:=14.25 _
            ).Select
    Next
    End Sub

  6. #6
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3224
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Salve a tutta questa bella gente

    @alfrimpa
    Quello che chiedi di fare ha delle variabili specifiche: altezza di una riga (almeno le prime 10) e ampiezza di una colonna (almeno per la prima).
    La macro suggerita da patel (che saluto), ammesso che la col.A sia larga 8,43 e le righe siano alte 14,25 deve essere rapportata a 10 oggetti (adesso ne incorpora solo 5); il ciclo deve essere da 1 a 150 step 14,25

    Per quanto riguarda il punto 2 se non sbaglio OptionButton non ha la proprietà LinkedCell.

    Il punto 3 potrebbe essere inserito come contatore nel suddetto ciclo impostandolo in modo tale che se il ciclo ha superato la metà il gruppo diventa 2

    Spero di non aver detto ca...stronerie.

    Ciao a tutti,
    Mario

  7. #7

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Giusto una bozza come spunto:

    Codice: 
    Sub CreaOptionButton()
      'by scossa
      
      Dim j As Long, k As Long
      Dim ws As Worksheet
      Dim oOle As OLEObject
      
      Set ws = ActiveSheet
      For j = 1 To 10
        Set oOle = ws.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _
              DisplayAsIcon:=False, Left:=Cells(j, 2).Left + 2, Top:=Cells(j, 2).Top, Width:=75, Height:=Cells(j, 2).Height)
        With oOle
          If ((j - 1) Mod 5 = 0) Then k = k + 1
          .Object.Caption = "Opzione " & j
          .LinkedCell = ws.Cells(j, 1).Address
          .Object.GroupName = "Gruppo" & k
        End With
      Next
      Set ws = Nothing
      Set oOle = Nothing
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  8. #8

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Ringrazio tutti gli intervenuti (i soliti noti :167:) per l'ammirevole impegno.

    La macro di Marco poi (me lo perdonino gli altri) è geniale e fa quel che deve ma io faccio veramente fatica a capirla.

    Qui mi fermo (e spunto la discussione come risolta) perché penso che difficilmente riuscirei ad adattare questa macro al mio caso concreto (e non voglio tediarvi ulteriormente con continue richieste per fare cose di cui non son capace).

    Farò prove su prove e cercherò di studiare.

    Grazie ancora.

    Alfredo

  9. #9
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1124
    Versione Office
    2010
    Likes ricevuti
    146
    Likes dati
    1

    Re: Macro per inserimento ActiveX su foglio di lavoro

    io non ho capito questa riga
    .Object.GroupName = "Gruppo" & k
    per il resto c'è poco da perdonare, tutti ci inchiniamo al grande scossa ed auspichiamo interventi più frequenti (scossa, io aspetto ancora una risposta da te)

  10. #10

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    io non ho capito questa riga
    .Object.GroupName = "Gruppo" & k
    come da punto 3 della richiesta di Alfredo, serve per creare gruppi separati di 5 OptionButton (vedi anche http://www.forumexcel.it/forum/6-dom...o-di-un-gruppo)


    (scossa, io aspetto ancora una risposta da te)
    :92: sinceramente non ricordo, :256: mi puoi rinfrescare la memoria?

  11. #11
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1124
    Versione Office
    2010
    Likes ricevuti
    146
    Likes dati
    1

    Re: Macro per inserimento ActiveX su foglio di lavoro

    ok, apro una discussione in proposito

  12. #12

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Ciao a tutti.

    Ritorno in argomento per illustrare meglio da dove e come è nata la mia necessità.

    Come potete vedere dal file allegato ho un foglio di lavoro con un questionario a scelta multipla.

    L'esigenza era quella di inserire in colonna E tanti optionbutton quante erano le risposte ad ogni singola domanda.

    Ho modificato la macro di Marco (che è stato un ottimo spunto) in questo modo e credo faccia il suo lavoro correttamente.

    Codice: 
    Sub CreaOptionButton()
      'by scossa
      
      Dim j As Long, k As Long
      Dim ws As Worksheet
      Dim oOle As OLEObject
      Set ws = ActiveSheet
      Application.ScreenUpdating = False
      For j = ActiveCell.Row To ActiveCell.Row + ActiveCell.Offset(0, -3).CurrentRegion.Rows.Count - 2
        Set oOle = ws.OLEObjects.Add(ClassType:="Forms.OptionButton.1", Link:=False, _
              DisplayAsIcon:=False, Left:=Cells(j, 5).Left + 2, Top:=Cells(j, 5).Top, Width:=15, Height:=Cells(j, 5).Height)
        With oOle
          If ((j - 1) Mod ActiveCell.Offset(0, -3).CurrentRegion.Rows.Count - 2 = 0) Then k = k + 1
          .Object.Caption = ""
          .LinkedCell = ws.Cells(j, 4).Address
          .Object.GroupName = "Gruppo" & Right(ActiveCell.Offset(-1, -3), 1)
        End With
      Next
      Set ws = Nothing
      Set oOle = Nothing
      Application.ScreenUpdating = True
    End Sub
    @ scossa

    Marco attendo con piacere tuoi commenti/correzioni.

    Grazie ancora.

    Alfredo

    P.S. Ho provato a eliminare la seguente istruzione

    Codice: 
    If ((j - 1) Mod ActiveCell.Offset(0, -3).CurrentRegion.Rows.Count - 2 = 0) Then k = k + 1
    e sembra funzionare ugualmente bene. me la puoi spiegare?

  13. #13

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Marco attendo con piacere tuoi commenti/correzioni.
    ...
    Codice: 
    If ((j - 1) Mod ActiveCell.Offset(0, -3).CurrentRegion.Rows.Count - 2 = 0) Then k = k + 1
    e sembra funzionare ugualmente bene. me la puoi spiegare?
    Mi servirebbe il file o perlomeno sapere dove sono i tuoi dati visto che nel codice usi CurrentRegion ....
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  14. #14

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Cavolo Marco volevo farlo ma me ne sono proprio dimenticato. Perdonami.

    Eccolo

    Alfredo
    File Allegati File Allegati

  15. #15

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Ancora una cosa che mi appare alquanto strana.

    Se inserisco manualmente un OptionButton (ActiveX) e ci clicco su con il tasto dx del mouse mi vien fuori il seguente menù: Taglia, Copia, Incolla, Proprietà, Visualizza codice, Oggetto pulsante di opzione, Gruppo, Ordine e Formato controllo.

    Se, invece, clicco sempre con il tasto dx su uno degli OptionButton creati con la macro il menù che viene fuori è questo: Taglia, Copia, Incolla, Oggetto pulsante di opzione, Gruppo, Ordina, Assegna macro (disabilitato) e Formato oggetto.

    Mi chiedevo il perché di questa diversità dei due menù per un controllo che dovrebbe essere dello stesso tipo ossia ActiveX.

    Alfredo

  16. #16

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    P.S. Ho provato a eliminare la seguente istruzione
    Codice: 
    If ((j - 1) Mod ActiveCell.Offset(0, -3).CurrentRegion.Rows.Count - 2 = 0) Then k = k + 1
    e sembra funzionare ugualmente bene. me la puoi spiegare?
    Certo, non serve a nulla, visto che k poi non lo usi: per il GroupName usi .Object.GroupName = "Gruppo" & Right(ActiveCell.Offset(-1, -3), 1)
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  17. #17

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    E sulla diversità dei menù che dicevo prima mi sai dire qualcosa?

    Alfredo

  18. #18

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Mi chiedevo il perché di questa diversità dei due menù per un controllo che dovrebbe essere dello stesso tipo ossia ActiveX.
    Non saprei; il tuo file, aperto con Excel 2010, mostra (ovviamente in modalità progettazione) le stesse voci che mostra per un OptionButton aggiunto manualmente (Taglia, Copia, Incolla, Proprietà, Visualizza codice, Oggetto pulsante di opzione, Gruppo, Ordine e Formato controllo); la discrasia credo sia un "feature" di Excel 2007, ora non ho modo di verificarlo.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  19. #19

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6840
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    166

    Re: Macro per inserimento ActiveX su foglio di lavoro

    Niente da fare.

    Ho riprovato: inserendo manualmente il pulsante (registrando la macro) posso selezionare le Proprietà.

    Se eseguo la macro registrata sul pulsante creato il menù cambia e non posso aprire la finestra delle Proprietà.

    Alfredo

Discussioni Simili

  1. Problema con caselle combinate (ActiveX) inserite su Foglio di Lavoro
    Di MarcoM nel forum Domande su Excel VBA e MACRO
    Risposte: 10
    Ultimo Messaggio: 03/03/17, 21:31
  2. Scorrere su un foglio di lavoro mentre si esegue una macro.
    Di salesman nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 14/02/17, 09:56
  3. foglio di lavoro excel
    Di CRISTIAN nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 12/05/16, 12:08
  4. Macro suddivise per foglio di lavoro
    Di Theinvoker nel forum Domande su Excel VBA e MACRO
    Risposte: 13
    Ultimo Messaggio: 02/03/16, 20:59
  5. Macro salvataggio foglio lavoro con aggiunta manuale della data
    Di Jump66 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 21/08/15, 23:07

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •