Error 1004 insertando datos a una hoja de excel
No encuentro el error de acuerdo al código para comenzar en la fila 31 lo hace sin problemas pero a la hora de cerrar el formulario y abrirlo de n nuevo con los datos insertados genera el error toca borrar y comenzar de la fila 31 de nuevo y ese no es el caso es para que queden insertados como una base de datos gracias y mas error me da si deseo cambiar y comenzar de la fila A2 que es lo va a quedar la fila A31 eran solo pruebas de conocimiento
gracias mundiales...
Option Explicit Dim a, c, b As Variant 'Al inicio del código Sub FilterData() Dim txt1 As String, txt2 As String, txt3 As String Dim b As Variant Dim i As Long, j As Long, k As Long ' ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2)) listcargaproductos.Clear For i = 1 To UBound(a, 1) 'linea que mellega al ultimo registro If txtbuscapro.Value = "" Then txt1 = a(i, 1) Else txt1 = txtbuscapro.Value If LCase(a(i, 2)) Like "*" & LCase(txt1) & "*" Then 'linea que me lleva a la columna requerida j = j + 1 For k = 1 To UBound(a, 2) ''2 b(j, k) = a(i, k) If k = 5 Then b(j, k) = Format(b(j, k), "$ #,##0.00") End If If k = 6 Then b(j, k) = Format(b(j, k), "$ #,##0.00") End If Next End If Next i If j > 0 Then listcargaproductos.List = b End Sub Private Sub userform_initialize() 'esta parte es donde se detiene y genera el error 'Ajusta columna "K" para la última columna con datos 'Ajusta celda "A2" con la celda de inicio de datos 'Ajusta Hoja1 con el nombre de tu hoja 'El filtro funciona buscando los datos en la columna "A" b = Sheets("Hoja11").Range("A2:K" & Sheets("Hoja11").Range("A" & Rows.Count).End(3)).Value listcargaproductos.ColumnCount = UBound(b, 2) End Sub Private Sub cmdregproducto_Click() Dim lr As Long, i As Long, fin As Long, cont As Long, n As Long Dim pre As String ' 'Validaciones If ComboBox1 = "" Or ComboBox1.ListIndex = -1 Then MsgBox ("Se requiere que seleccione un nombre para insertar un codigo"), vbCritical, "AVISO" ComboBox1.SetFocus Exit Sub End If If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False 'Range (Range("A & ActiveCell.Row), Range (1 & ActiveCell.Row).End(xlToLeft)).Select 'Proceso lr = Range("A" & Rows.Count).End(3).Row + 2 'a = Range("A" & lr) a = Range("A31:A" & lr) Select Case lr Case Is < 31: fin = 0 Case 31: fin = 1 Case Else: fin = UBound(a) End Select n = 1 pre = Split(ComboBox1.Value, "-")(0) For i = 1 To fin If Left(a(i, 1), Len(pre)) = pre Then n = n + 1 End If Next Dim X As Integer 'Recoge variable de número de datos X = WorksheetFunction.CountA(Range("A2:A10000")) 'Da de alta cada campo ya que tdos los txt estan rellenos 'Variable X solo por mayor comodidad al escribir código X = X + 2 'X recoge el valor del número de asientos más el número de línea 'donde empiezan 'Alta artículo Cells(X, 1) = ComboBox1.Text Cells(X, 2) = txtpro.Text Cells(X, 3) = txttipopro.Text Cells(X, 4) = txtprove.Text Cells(X, 5) = txtprecio1.Text Cells(X, 6) = txtprecio2.Text End Sub
2 respuestas
Respuesta de Dante Amor
2
Respuesta de Elsa Matilde
2