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

