Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Inserire una lettera con un click

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Inserire una lettera con un click

Postdi ahidai » 23/10/13 14:39

Un saluto a tutti, è un po che non scrivo, ma comunque vi seguo sempre.
Allora ho trovato sul forum questo codice funzionante che fa al caso mio, purtroppo funziona solo con una cella singola (A1) e non con celle unite (A1:B2).
C'è qualche rimedio? Un grazie anticipato.
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
CheckArea = "M2:N76"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    Application.EnableEvents = False
    If Selection.Value = "x" Then
        Selection.ClearContents
        ActiveCell.Offset(0, 1).Select
    Else
        Selection.Value = "x"
        ActiveCell.Offset(0, 1).Select
    End If
End If
Application.EnableEvents = True
End Sub
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Sponsor
 

Re: Inserire una lettera con un click

Postdi scossa » 23/10/13 14:55

ahidai ha scritto:..... purtroppo funziona solo con una cella singola (A1) e non con celle unite (A1:B2).
C'è qualche rimedio? Un grazie anticipato.


Come faccia a funzionare se CheckArea è M2:N76 e tu parli di A1:B2 lo sai tu ..., comunque:

Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CheckArea As String
  CheckArea = "M2:N76"
  If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
      If Target(1, 1).Value = "x" Then
          Target.ClearContents
          Target.Offset(0, 1).Select
      Else
          Target(1, 1).Value = "x"
          Target.Offset(0, 1).Select
      End If
  End If
  Cancel = True
End Sub
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 23/10/13 16:30

Grazie Scossa funziona alla perfezione, A1:B2 era solo un esempio.
Si può farla funzionare in modo che se inserisco una "x" non si può inserire in un'altra cella?
Saluti
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi Zer0Kelvin » 24/10/13 14:16

Ciao.
Prova questa modifica:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CheckArea As String
  CheckArea = "M2:N76"
  If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
      If Target(1, 1).Value = "x" Then
          Target.ClearContents
          Target.Offset(0, 1).Select
      Else
        If Range(CheckArea).Find(what:="x") Is Nothing Then
          Target(1, 1).Value = "x"
          Target.Offset(0, 1).Select
        End If
      End If
  End If
  Cancel = True
End Sub
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: Inserire una lettera con un click

Postdi ahidai » 24/10/13 17:54

Ciao Zer0Kelvin, grazie per la risposta, il codice funziona ma c'è un problema e cioè cliccando 2 volte in qualsiasi parte del foglio non mi fa accedere nelle singole celle.
Spero di essere stato chiaro nella spiegazione.
Saluti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 24/10/13 18:01

ahidai ha scritto:Ciao Zer0Kelvin, grazie per la risposta, il codice funziona ma c'è un problema e cioè cliccando 2 volte in qualsiasi parte del foglio non mi fa accedere nelle singole celle.
Spero di essere stato chiaro nella spiegazione.
Saluti.


Rispondo al volo, sposta
Cancel = True

prima dell' End If
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 26/10/13 09:34

Grazie Scossa, funziona perfettamente, volevo chiederti è possibile avere diverse CheckArea = "M2:N16", "M17:N26", "M27:N36" e così via, cioè dare a me la possibilità di indicare diverse CheckArea sullo stesso foglio.
Saluti
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 26/10/13 14:15

ahidai ha scritto:Grazie Scossa, funziona perfettamente, volevo chiederti è possibile avere diverse CheckArea = "M2:N16", "M17:N26", "M27:N36" e così via, cioè dare a me la possibilità di indicare diverse CheckArea sullo stesso foglio.
Saluti


Codice: Seleziona tutto
CheckArea = "M2:N16, M17:N26, M27:N36"
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 28/10/13 14:52

Grazie per la risposta, purtroppo non funziona, mi fa inserire solo un "x".
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 28/10/13 17:29

ahidai ha scritto:Grazie per la risposta, purtroppo non funziona, mi fa inserire solo un "x".


Scusami, ma l'hai chiesto tu:
ahidai ha scritto:Si può farla funzionare in modo che se inserisco una "x" non si può inserire in un'altra cella?
Saluti
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 28/10/13 22:17

Si certo che l'ho chiesto io, e va bene così, è solo che come dicevo prima volevo avere la possibilità di inserire una sola "x" nel CheckArea = "M2:N16", poi un'altra "x" nel CheckArea = ""M17:N26" e così via.
Sicuramente è stata colpa mia nel senso che non mi sono spiegato.
Grazie ancora per la disponibilità.
Saluti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 28/10/13 22:55

ahidai ha scritto:Si certo che l'ho chiesto io, e va bene così, è solo che come dicevo prima volevo avere la possibilità di inserire una sola "x" nel CheckArea = "M2:N16", poi un'altra "x" nel CheckArea = ""M17:N26" e così via.


Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CheckArea As Range
  Dim rArea As Range
 
  Set CheckArea = Me.Range("M2:N8, M10:N18")
  If Not Application.Intersect(Target(1, 1), CheckArea) Is Nothing Then
    For Each rArea In CheckArea.Areas
      If Not Intersect(Target(1, 1), rArea) Is Nothing Then
        If Target(1, 1).Value = "x" Then
          Target.ClearContents
          Target.Offset(0, 1).Select
        Else
          If rArea.Find(what:="x") Is Nothing Then
            Target(1, 1).Value = "x"
            Target.Offset(0, 1).Select
          End If
        End If
      End If
    Next
    Cancel = True
  End If
  Set CheckArea = Nothing
End Sub
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 30/10/13 08:39

Buongiorno, grazie ancora per la risposta, purtroppo quando inserisco la "x" nella CheckArea e provo a inserire altre "x" le accetta, quindi nella CheckArea non ho solo una "x" ma altre "x".
Allego il file: http://www.filedropper.com/note2
Saluti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 30/10/13 11:09

ahidai ha scritto:Buongiorno, grazie ancora per la risposta, purtroppo quando inserisco la "x" nella CheckArea e provo a inserire altre "x" le accetta, quindi nella CheckArea non ho solo una "x" ma altre "x".
Allego il file: http://www.filedropper.com/note2
Saluti.


Ora non posso scaricare il file, ma il codice che ti ho scritto funziona:
Click1.xlsm
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 04/11/13 15:09

scossa ha scritto:
ahidai ha scritto:Buongiorno, grazie ancora per la risposta, purtroppo quando inserisco la "x" nella CheckArea e provo a inserire altre "x" le accetta, quindi nella CheckArea non ho solo una "x" ma altre "x".
Allego il file: http://www.filedropper.com/note2
Saluti.


Ora non posso scaricare il file, ma il codice che ti ho scritto funziona:
Click1.xlsm


Ciao Scossa, scusami se rispondo solo ora, stavo all'estero. Comunque ho provato il tuo file ed effettivamente funziona, non capisco perchè sul mio non funziona, ti chiedo cortesemente se puoi scaricarti il file e vedere dove sbaglio.
Saluti.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 09/11/13 14:32

ahidai ha scritto:
ahidai ha scritto:Allego il file: http://www.filedropper.com/note2


Ciao Scossa, scusami se rispondo solo ora, stavo all'estero. Comunque ho provato il tuo file ed effettivamente funziona, non capisco perchè sul mio non funziona, ti chiedo cortesemente se puoi scaricarti il file e vedere dove sbaglio.
Saluti.


Non c'è nessun file in quel link
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 09/11/13 17:45

Ciao, eppure ero convinto di averlo allegato

http://www.filedropper.com/note2

Ciao e grazie ancora per la tua disponibilità
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi scossa » 10/11/13 14:33



Purtroppo le celle unite sono sempre fonte di complicazioni.

Le aree erano definite male:
Codice: Seleziona tutto
Me.Range("M7:N15, M17:N25, M27:N35, M37:N45, M47:N55, M57:N65, M67:N75")

anziché
Codice: Seleziona tutto
Me.Range("M7:N16, M17:N26, M27:N36, M37:N46, M47:N56, M57:N66, M67:N76")


ed ho aggiunto la direttiva searchdirection:=xlPrevious al metodo Find.

Questo il codice corretto:

Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CheckArea As Range
  Dim rArea As Range
 
  Set CheckArea = Me.Range("M7:N16, M17:N26, M27:N36, M37:N46, M47:N56, M57:N66, M67:N76")
  If Not Application.Intersect(Target(1, 1), CheckArea) Is Nothing Then
    For Each rArea In CheckArea.Areas
      If Not Intersect(Target(1, 1), rArea) Is Nothing Then
        If Target(1, 1).Value = "x" Then
          Target.ClearContents
          Target.Offset(0, 1).Select
        Else
          If rArea.Find(what:="x", searchdirection:=xlPrevious) Is Nothing Then
            Target(1, 1).Value = "x"
            Target.Offset(0, 1).Select
          End If
        End If
      End If
    Next
    Cancel = True
  End If
  Set CheckArea = Nothing
End Sub
Bye!
scossa

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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Inserire una lettera con un click

Postdi ahidai » 11/11/13 18:42

Grande Scossa, funziona alla perfezione.
Ciao.
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Re: Inserire una lettera con un click

Postdi ahidai » 12/11/13 19:39

ahidai ha scritto:Grande Scossa, funziona alla perfezione.
Ciao.


Ciao Scossa, come dicevo nel post precedente funziona alla perfezione, scusami se approfitto della tua disponibilità, avrei bisogno di incrementare il codice, non so se è possibile farlo, comunque allego il file, dove è spiegato tutto.
Grazie ancora e buona serata.

http://www.filedropper.com/note3
ahidai
Utente Senior
 
Post: 209
Iscritto il: 08/12/10 17:33

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Inserire una lettera con un click":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti