Scrivere dati su celle sottostanti non vuote.

Anonimo
2020-08-19T02:10:13+00:00

Ciao,

tramite un pulsante vorrei inserire il contenuto della cella F28, con risultato => 0 nella prima cella vuota nell'intervallo S7 : S25 e < 0 nella prima cella vuota nell'intervallo T7 : T25 

L'intervallo di celle S7 : T25 ha celle unite a due a due.

Esempio:

al primo click del pulsante, se il numero che si trova nella cella F28 risulta positivo, si dovrà posizionare nella cella S7

al secondo click del pulsante, se il numero che si trova nella cella F28 risulta ancora positivo, si dovrà posizionare nella cella S9

al terzo click del pulsante, se il numero che si trova nella cella F28 risulta negativo, si dovrà posizionare nella cella T11

al quarto click del pulsante, se il numero che si trova nella cella F28 risulta positivo, si dovrà posizionare nella cella S13

Spero di aver reso la domanda comprensibile.

Vladimiro

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-08-19T21:29:05+00:00

Ciao Vladimiro,,

non so che pensare!

L'unica cosa è che scaricando il file il CommandButton (che nella tua figura, anche se non capisco come hai fatto, si chiama Pulsante1) me lo elimina per cui sono costretto a rimetterlo senza toccare naturalmente il codice VBA.

Il mio ultimo file di prova non ha un Controllo CommandButton ma invece un pulsante! Quindi credo che tu stia utilizando ancora il mio vecchio file! 

Comunque, a me  il codice allegato al pulsante (Pulsante1), ossia la procedura Tester, funziona senza alcun problema. Pertanto, posso solo suggerirti di scaricare l'ultimo file che si visualizza come:

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-08-19T14:34:58+00:00

    Ciao Vladimiro,

    probabilmente l'ho spiegato male.

    Poniamo di avere nella cella F28, in progressione ad ogni click, i seguenti numeri: -3  -5  2

    Il risultato esatto dovrebbe essere:

    -3  -> T7

    -5  -> T9

     2  -> S11

    Con il tuo esempio il 2 si piazzerebbe nella cella S7 e non va bene.

    Un'altra cosa,

    è possibile usare un pulsante normale al posto di un pulsante di comando controllo ActiveX?

    In un modulo Standard incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

        Dim SH As Worksheet

        Dim rCell As Range

        Dim LRow As Long

        Const sFoglio As String = "Foglio1"           '<<=== Modifica

        Set SH = ThisWorkbook.Sheets(sFoglio)

        Set rCell = SH.Range("F28")

        With rCell

            If .Value > 0 Then

                LRow = LastRow(SH, SH.Range("S7:T25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                SH.Range("S" & LRow).Value = .Value

            ElseIf .Value < 0 Then

                LRow = LastRow(SH, SH.Range("S7:T25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                SH.Range("T" & LRow).Value = .Value

          End If

        End With

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

        Optional Rng As Range, _

        Optional minRow As Long = 1)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

            After:=Rng.Cells(1), _

            Lookat:=xlPart, _

            LookIn:=xlFormulas, _

            SearchOrder:=xlByRows, _

            SearchDirection:=xlPrevious, _

            MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

    End Function

    '<<========

    Ho aggiornato il mio file di prova Vladimiro20200819.xlsm

    ===

    Regards,

    Norman

    Ciao Norman,

    purtroppo non è cambiato nulla.

    Guarda la seguente immagine:

    Il 3 e il -2 non debbono mai stare sulla stessa riga.

    Cioè, se al primo click ci fosse stato il 3, il secondo click doveva inserire il -2 nella cella T9

    Se al primo click ci fosse stato il -2, il secondo click doveva inserire il 3 nella cella S9

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-08-19T12:36:58+00:00

    Ciao Vladimiro,

    probabilmente l'ho spiegato male.

    Poniamo di avere nella cella F28, in progressione ad ogni click, i seguenti numeri: -3  -5  2

    Il risultato esatto dovrebbe essere:

    -3  -> T7

    -5  -> T9

     2  -> S11

    Con il tuo esempio il 2 si piazzerebbe nella cella S7 e non va bene.

    Un'altra cosa,

    è possibile usare un pulsante normale al posto di un pulsante di comando controllo ActiveX?

    In un modulo Standard incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

        Dim SH As Worksheet

        Dim rCell As Range

        Dim LRow As Long

        Const sFoglio As String = "Foglio1"           '<<=== Modifica

        Set SH = ThisWorkbook.Sheets(sFoglio)

        Set rCell = SH.Range("F28")

        With rCell

            If .Value > 0 Then

                LRow = LastRow(SH, SH.Range("S7:T25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                SH.Range("S" & LRow).Value = .Value

            ElseIf .Value < 0 Then

                LRow = LastRow(SH, SH.Range("S7:T25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                SH.Range("T" & LRow).Value = .Value

          End If

        End With

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

        Optional Rng As Range, _

        Optional minRow As Long = 1)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

            After:=Rng.Cells(1), _

            Lookat:=xlPart, _

            LookIn:=xlFormulas, _

            SearchOrder:=xlByRows, _

            SearchDirection:=xlPrevious, _

            MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

    End Function

    '<<========

    Ho aggiornato il mio file di prova Vladimiro20200819.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-08-19T10:33:35+00:00

    Ciao Vladimiro,

    tramite un pulsante vorrei inserire il contenuto della cella F28, con risultato => 0 nella prima cella vuota nell'intervallo S7 : S25 e < 0 nella prima cella vuota nell'intervallo T7 : T25 

    L'intervallo di celle S7 : T25 ha celle unite a due a due.

    Esempio:

    al primo click del pulsante, se il numero che si trova nella cella F28 risulta positivo, si dovrà posizionare nella cella S7

    al secondo click del pulsante, se il numero che si trova nella cella F28 risulta ancora positivo, si dovrà posizionare nella cella S9

    al terzo click del pulsante, se il numero che si trova nella cella F28 risulta negativo, si dovrà posizionare nella cella T11

    al quarto click del pulsante, se il numero che si trova nella cella F28 risulta positivo, si dovrà posizionare nella cella S13

    In un modulo standard, incolla il seguente codice:

    '========>>

    Option Explicit

    '--------->>

    Public Function LastRow(SH As Worksheet, _

        Optional Rng As Range, _

        Optional minRow As Long = 1)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

            After:=Rng.Cells(1), _

            Lookat:=xlPart, _

            LookIn:=xlFormulas, _

            SearchOrder:=xlByRows, _

            SearchDirection:=xlPrevious, _

            MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

    End Function

    '<<========

    Nel modulo di codice del foglio di interesse, incolla:

    '========>>

    Option Explicit

    '-------->>

    Private Sub CommandButton1_Click()

        Dim rCell As Range

        Dim LRow As Long

        Set rCell = Me.Range("F28")

        With rCell

            If .Value > 0 Then

                LRow = LastRow(Me, Me.Range("S7:S25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                Me.Range("S" & LRow).Value = .Value

            ElseIf .Value < 0 Then

                LRow = LastRow(Me, Me.Range("T7:T25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                Me.Range("T" & LRow).Value = .Value

          End If

        End With

    End Sub

    '<<========

    Potresti scaricare il mio file di prova Vladimiro20200819.xlsm

    ===

    Regards,

    Norman

    Ciao Norman,

    probabilmente l'ho spiegato male.

    Poniamo di avere nella cella F28, in progressione ad ogni click, i seguenti numeri: -3  -5  2

    Il risultato esatto dovrebbe essere:

    -3  -> T7

    -5  -> T9

     2  -> S11

    Con il tuo esempio il 2 si piazzerebbe nella cella S7 e non va bene.

    Un'altra cosa,

    è possibile usare un pulsante normale al posto di un pulsante di comando controllo ActiveX?

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-08-19T07:01:57+00:00

    Ciao Vladimiro,

    tramite un pulsante vorrei inserire il contenuto della cella F28, con risultato => 0 nella prima cella vuota nell'intervallo S7 : S25 e < 0 nella prima cella vuota nell'intervallo T7 : T25 

    L'intervallo di celle S7 : T25 ha celle unite a due a due.

    Esempio:

    al primo click del pulsante, se il numero che si trova nella cella F28 risulta positivo, si dovrà posizionare nella cella S7

    al secondo click del pulsante, se il numero che si trova nella cella F28 risulta ancora positivo, si dovrà posizionare nella cella S9

    al terzo click del pulsante, se il numero che si trova nella cella F28 risulta negativo, si dovrà posizionare nella cella T11

    al quarto click del pulsante, se il numero che si trova nella cella F28 risulta positivo, si dovrà posizionare nella cella S13

    In un modulo standard, incolla il seguente codice:

    '========>>

    Option Explicit

    '--------->>

    Public Function LastRow(SH As Worksheet, _

        Optional Rng As Range, _

        Optional minRow As Long = 1)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

            After:=Rng.Cells(1), _

            Lookat:=xlPart, _

            LookIn:=xlFormulas, _

            SearchOrder:=xlByRows, _

            SearchDirection:=xlPrevious, _

            MatchCase:=False).Row

        On Error GoTo 0

        If LastRow < minRow Then

            LastRow = minRow

        End If

    End Function

    '<<========

    Nel modulo di codice del foglio di interesse, incolla:

    '========>>

    Option Explicit

    '-------->>

    Private Sub CommandButton1_Click()

        Dim rCell As Range

        Dim LRow As Long

        Set rCell = Me.Range("F28")

        With rCell

            If .Value > 0 Then

                LRow = LastRow(Me, Me.Range("S7:S25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                Me.Range("S" & LRow).Value = .Value

            ElseIf .Value < 0 Then

                LRow = LastRow(Me, Me.Range("T7:T25"), 5) + 2

                If LRow - 2 >= 25 Then Exit Sub

                Me.Range("T" & LRow).Value = .Value

          End If

        End With

    End Sub

    '<<========

    Potresti scaricare il mio file di prova Vladimiro20200819.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento