trovare prima riga vuota

Anonimo
2017-08-03T11:08:57+00:00

buongiorno

foglio di lavoro dal nome database

inserisco nuovo record in riga due

poi ordino per colonna f prodotto e per data colonna g

il prodotto raggiunge la sua posizione ordinata 

il passo successivo della macro individuo la prima riga vuota e incremento il suo progressivo prendendo il valore precedente.

  RigaPrec = Range("B1").End(xlDown).Row

  Nriga = RigaPrec + 1

  RigaSucc = Nriga + 1

  progr = Range("B" & RigaSucc).Value + 1

   Range("B" & Nriga).Value = progr

se quando ordino pero l'articolo che sto inserendo mi capita sulla riga due quindi all'inizio del mio elenco 

il comando RigaPrec = Range("B1").End(xlDown).Row fallisce.... perche? non è in grado di restituirmi 2?

come risolvo?

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
2017-08-03T19:17:45+00:00

Ciao Mauro,

Se a questo file di partenza carico un altro xavier dovra andare in riga due con progressivo 2

e se successivamente carico angela dovra andare in riga 5 con progressivo 2

Nella cella B2, immetti la formula

=CONTA.SE(Prodotti; F2)

Sostituisci il tuo codice con la seguente versione:

'=========>>

Option Explicit

Option Compare Text

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

Public Sub Tester()

    Dim WB As Workbook

    Dim SH As Worksheet

    Dim Rng As Range

    Dim Prodotto As String

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

    Const sTabella As String = "Prodotti"                 '<<=== Modifica

    Prodotto = CStr(InputBox("Inserire il Nome del prodotto da quotare.", "1"))

    If Prodotto = vbNullString Then

        Call MsgBox( _

             Prompt:="Non hai inserito un prodotto!", _

             Buttons:=vbCritical, _

             Title:="CODICE TERMINATO!")

        Exit Sub

    End If

    Set WB = ThisWorkbook

    Set SH = WB.Sheets(sFoglio)

    Set Rng = SH.Range(sTabella).CurrentRegion

    With Rng

        With .Rows(2)

            .Copy

            .Insert Shift:=xlDown

        End With

        .Range("C2").Value = Date

        .Range("F2") = Prodotto

        .CurrentRegion.Sort _

                Key1:=.Range("F1"), _

                Order1:=xlDescending, _

                Key2:=.Range("C1"), _

                Order2:=xlDescending, _

                Header:=xlYes, _

                OrderCustom:=1, _

                MatchCase:=False, _

                Orientation:=xlTopToBottom

                .Columns("F").Resize(.Rows.Count + 1).Name = sTabella

    End With

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

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

12 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-08-03T16:06:33+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-08-03T15:51:06+00:00

    Ciao Mauro,

    A mano, crea 4 nuove righe per i prodotti ANGELA, XAVIER, MAURO e ALFREDO

     Poi, per favore, carica il file per mostrare la tabella aggionata nel modo voluto.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-08-03T15:17:49+00:00

    Ciao Norman, correggo errori ortografici scusate

    se attivo il bottone e carico AAA dovrebbe prendere come progressivo il 3 poi il 4 e cosi via...

    se invece carico norman che non esiste mi dovrebbe andare in riga 2 perché la N viene dopo la M e con il progressivo 1

    visto che e' il primo inserimento se carico nuovamente norman ovviamente prenderà il progressivo 3.

    ovviamente metterei un if che mi assegna 1 quando il record è la prima volta che lo inserisco ma non riesco a risolvere il problema del numero prima riga vuota quando questa risulta essere la due :(

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-08-03T15:11:29+00:00

    Ciao Mauro,

    se attivo il bottone a carico AAA dovrebbe prendere come progressivo il 3

    se invece carico norman che non esiste mi dovrebbe andare in riga 2 perche la N viene dopo la N e con il progressivo 1

    visto che e' il primo inserimento.

    ovviamente metterei un if che mi assegna 1 quando il record è la prima volta che lo inserisco ma non riesco a risolvere il problema del numero prima riga vuota quando questa risulta essere la due :(

    sob

    A mano, crea 4 nuove righe per i prodotti ANGELA, XAVIER, MAURO e ALFREDO

    Poi, per favore, carica il file per mostrare la tabella aggionata nel modo voluto.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento