Errore aggiunta dati tramite texbox

vediamo se riesco a spiegarmi allora o delle 3 listbox dove al caricamento della userforum mi carica i dati nella prima listbox, cliccando sul dato caricato mi carica altri dati sulla seconda listbox, successivamente cliccando sul dato mi carica i dati nella 3 listbox

nella listbox 1 seleziono un nome poi nella seconda una data e poi altri 2 dati

volevo scrivere in celle diverse (sul foglio) con varie texbox che sono dalla 4 alla 19 partendo dalla cella 20 in poi

o provato in questo modo

Private Sub CommandButton2_Click()
    
    Dim lRiga As Long
    Dim lng1  As Long
    Dim x   As Long
    Dim s     As String
    Dim lng As Long
    Dim col As Long
    
    lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        
        For lng1 = 2 To lRiga
            
            If .Range("A" & lng1).Value = Me.ListBox1.Text And _
                    .Range("C" & lng1).Value = CDate(Me.ListBox2.Text) Then
                    
                col = 12
                For x = 4 To 19
                .Cells(lRiga, lng).Value = CDbl(Me.Controls(s & lng).Text)
                col = col + 1
                   
        Next x
            'Dico i formati delle Celle
            On Error Resume Next
ma da errore Rows

come posso fare?

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.


ma da errore Rows

.Cells(lRiga, lng).Value = CDbl(Me.Controls(s & lng).Text)

lng vale 0, non vedo dove le dai un valore. Non esiste la colonna 0 (la TextBox, non so, potresti avere TextBox0)...

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

scusa mauro ma non ti capisco potresti spiegarmi?

questo è tutto il codice

Option Explicit

'dichiaro una variabile
'visibile da tutta la UserForm
Private colCol As Collection
Private wk As Workbook
Private sh As Worksheet
Dim rng As Range
Dim c As Range

Private Sub CommandButton4_Click()
Unload Me
Inizio.Show
End Sub

Private Sub TextBox19_Change()
    
    On Error Resume Next
    'TextBox20.Value = TextBox21.Value - TextBox20.Value
    'TextBox20.Text = Format(TextBox5, "#,##0.00")

End Sub

Private Sub TextBox4_Change()

End Sub

'evento che si verifica
'alla creazione della userForm
Private Sub UserForm_Initialize()

    'dichiaro le variabili
    Dim lUltRiga As Long
    Dim v As Variant
    Dim hWnd As Long

        hWnd = FindWindow(vbNullString, Me.Caption)
        SetWindowLong hWnd, -16, &H84080080
        DrawMenuBar hWnd
    
    
    'metto riferimenti al Workbook
    'che contiene il codice
    ' e al Foglio con i dati
    Set wk = ThisWorkbook
    With wk
        Set sh = .Worksheets("Archivio")
    End With
    
    'creo la collection
    Set colCol = New Collection
    
    With sh
        'trovo l'utima riga con
        'dati in colonna A
        'nel Foglio1
        lUltRiga = .Range("A" & _
            .Rows.Count).End(xlUp).Row
        'metto un riferimento al range
        'con dati
        Set rng = .Range("A2:A" & lUltRiga)
        'ciclo il Range e carico la
        'collection
        On Error Resume Next
        For Each c In rng
            colCol.Add c.Value, CStr(c.Value)
        Next
    End With
    
    'dichiaro il numero di
    'colonne della ListBox2
    With Me.ListBox2
        .ColumnCount = 4
        .ColumnWidths = "60;0;80;0"
    End With
    'carico la listBox1
    With Me.ListBox1
        For Each v In colCol
            .AddItem v
        Next
      End With
End Sub

'evento che si verifica al click
'sulla ListBox1
Private Sub ListBox1_Click()
    Dim lCont As Long
    Dim lng As Long
    Dim d1 As Double
    Dim x   As Long

    lCont = 0
    With Me
        'pulisco ListBox1
        'e TextBox1
        '.TextBox1.Text = ""
        For x = 1 To 15
           Controls("TextBox" & x) = ""
            Next x

        .ListBox2.Clear
        .ListBox3.Clear
        'carico i nuovi valori
        .TextBox1.Text = .ListBox1.Text
        'ciclo i dati
        For Each c In rng
            'se ho corrispondenza
            If c.Value = .ListBox1.Text Then
                'carico la ListBox2
                .ListBox2.AddItem
                .ListBox2.List(lCont, 0) = c.Offset(0, 1).Value
                .ListBox2.List(lCont, 1) = Format(c.Offset(0, 14).Value, "#,###.00")
                .ListBox2.List(lCont, 2) = c.Offset(0, 8).Value
                '.ListBox2.List(lCont, 2) = Format(c.Offset(0, 14).Value, "#,###.00")
                '.ListBox2.List(lCont, 3) = Format(c.Offset(0, 15).Value, "#,###.00")
                lCont = lCont + 1
            End If
        Next
    End With
        For lng = 0 To Me.ListBox2.ListCount - 1
             d1 = d1 + Me.ListBox2.List(lng, 1)
        Next
    With Me
        .TextBox2.Text = Format(d1, "#,###.00")
    End With

End Sub

Private Sub ListBox2_Click()
    Dim lng As Long
    Dim d2 As Double
    Dim d3 As Double
    Dim d4 As Double

    With Me.ListBox3
        'aggiungo una riga a ListBox2
        .AddItem
        'passo i valori da ListBox1 a ListBox2
        .List(.ListCount - 1, 0) = Me.ListBox2.List(Me.ListBox2.ListIndex, 0)
        .List(.ListCount - 1, 1) = Me.ListBox2.List(Me.ListBox2.ListIndex, 1)
    End With
        With Me.ListBox3
        .ColumnCount = 2
        .ColumnWidths = "60;60"
    End With
    
        On Error Resume Next

        For lng = 0 To Me.ListBox3.ListCount - 1
             d2 = d2 + Me.ListBox3.List(lng, 1) 'lavoro totale
             'd3 = d3 + Me.ListBox2.List(lng, 2)
             'd4 = d4 + Me.ListBox2.List(lng, 3)
        Next
    With Me
        .TextBox3.Text = Format(d2, "#,##0.00")
        '.TextBox4.Text = Format(d3, "#,##0.00")
        'TextBox5.Text = Format(d4, "#,##0.00")
    End With

End Sub
Private Sub CommandButton2_Click()
    
    Dim lRiga As Long
    Dim lng1  As Long
    Dim x   As Long
    Dim s     As String
    Dim lng As Long
    Dim col As Long
    
    lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        
        For lng1 = 2 To lRiga
            
            If .Range("A" & lng1).Value = Me.ListBox1.Text And _
                    .Range("C" & lng1).Value = CDate(Me.ListBox2.Text) Then
                    
                col = 12
                For x = 4 To 19
                .Cells(lRiga, lng).Value = CDbl(Me.Controls(s & lng).Text)
                col = col + 1
                   
        Next x
            'Dico i formati delle Celle
            On Error Resume Next
                '.Cells(lNuovaRiga, 15).NumberFormat = "#,##0.00"
                '.Cells(lNuovaRiga, 16) = CDbl(TextBox12)
        
    End With

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

scusa mauro ma non ti capisco potresti spiegarmi?

                For x = 4 To 19
                .Cells(lRiga, lng).Value = CDbl(Me.Controls(s & lng).Text)
                col = col + 1
                   

C'è poco da spiegare. lng vale 0. Nel codice che hai postato forse (ma forse, eh) al posto di lng dovresti mettere x (forse perchè non ho capito cosa provi di fare). E' quella la variabile che stai ciclando, la x.

lng salta fuori dal nulla, o meglio, nesssuno le ha impostato un valore. Fai il passo passo (F8) e controlla di volta in volta il valore che prende lng nel coclo For.

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

devo dirgli di scrivermi il testo delle texbox numerate da 4 a 19 a partire dalla cella 20 in poi sulla riga selezionata tramite clic nella terza listbox

e che non ci riesco


da dettaglio spesei in poi

https://www.dropbox.com/s/yigb2qopl54t6fn/Screenshot%202014-03-31%2020.06.14.png

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

devo dirgli di scrivermi il testo delle texbox numerate da 4 a 19 a partire dalla cella 20 in poi sulla riga selezionata tramite clic nella terza listbox

e che non ci riesco

da dettaglio spesei in poi

https://www.dropbox.com/s/yigb2qopl54t6fn/Screenshot%202014-03-31%2020.06.14.png

Prima di darti la soluzione una domanda: hai provato a fare il passo passo con F8?

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

si, o provato a mettere x al posto di lng lng1 lngx solo x l'errore è sempre lostesso, non arriva neanche al ciclo appena clicco registra si ferma su errore Rows

non so cosa fare...

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

si, o provato a mettere x al posto di lng lng1 lngx solo x l'errore è sempre lostesso, non arriva neanche al ciclo appena clicco registra si ferma su errore Rows

non so cosa fare...

A quale riga?

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

lRiga = .Range("A" & .Rows.Count).End(xlUp).Row

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

lRiga = .Range("A" & .Rows.Count).End(xlUp).Row

Allora, manca un pezzo.

Qui trovi una versione semplificata di quello che stai provando di fare:

In particolare nota:

Private Sub CommandButton1_Click()

    Dim lng As Long
    Dim lRiga As Long
    
    With sh
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        For lng = 1 To 3
            .Cells(lRiga + 1, lng).Value = Me.Controls("TextBox" & lng).Value
        Next
    End With
    
End Sub

Dove le parti in grassetto sono quelle che mancano nel tuo codice e le parti in corsivo quelle che eseguono l'iterazione. Qui itero da 1 a 3, tu modificherai per il tuo intervallo.

Se non lo hai già fatto, dai un'occhiatina a questo articolo Wiki:

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

non riesco prima inserendo solo

   lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        For lng = 4 To 19
            .Cells(lRiga + 1, lng).Value = Me.Controls("TextBox" & lng).Value
        Next

mi scriveva una nuova riga ora quando ho inserito

If .Range("A" & lng1).Value = Me.ListBox1.Text And _
        .Range("C" & lng1).Value = CDate(Me.ListBox2.Text) Then

quindi

Private Sub CommandButton2_Click()
    Dim lng As Long
    Dim lRiga As Long
    Dim x   As Long
    Dim lng1  As Long
    
    With sh
    
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        
        If .Range("A" & lng1).Value = Me.ListBox1.Text And _
        .Range("C" & lng1).Value = CDate(Me.ListBox2.Text) Then
      
                    
        For lng = 4 To 19
            .Cells(lRiga + 1, lng).Value = Me.Controls("TextBox" & lng).Value

        Next
            'Dico i formati delle Celle
            On Error Resume Next
                '.Cells(lNuovaRiga, 15).NumberFormat = "#,##0.00"
                '.Cells(lNuovaRiga, 16) = CDbl(TextBox12)
         
    End With
End Sub

mi dice errore end with

non riesco proprio.

La risposta è risultata utile?

Siamo spiacenti che questo non sia stato utile.

Ottimo. Grazie per il tuo feedback.

Quanto sei soddisfatto di questa risposta?

Grazie per il feedback, ci aiuta a migliorare il sito.

Quanto sei soddisfatto di questa risposta?

Grazie per il tuo feedback.

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.

* Prova con un numero di pagina inferiore.

* Immetti solo numeri.

 
 

Informazioni domanda


Ultimo aggiornamento 6 ottobre 2021 Visualizzazioni 194 Si applica a: