我正在用excel做一个宏
在hoja1
excel 书中,我有用于捕获信息的表格,并且hoja2
必须保存读取的信息
Sheet1(捕获表格):
数据被正确读取,但是当将其传递给时出现问题hoja2
,它不会在下一行中插入新的捕获,但它所做的是新的捕获在第 5 行中替换它。
在 excel 的 Visual Basic 中添加一个模块并在其中编写我的宏
宏Grabar_Datos()
:
Sub Grabar_Datos()
Sheets("Hoja1").Select
Dim producto As String
producto = Range("G7").Value
Dim precio As String
precio = Range("G9").Value
Dim cantidad As String
cantidad = Range("G11").Value
Dim total As String
total = Range("G13").Value
Dim fecha As String
fecha = Range("G15").Value
Sheets("Hoja2").Select
Range("B1").Select
Selection.End(xlDown).Select
Dim fila As Integer
fila = ActiveCell.Row
fila = fila + 1
Cells(fila, 2).Select
ActiveCell = producto
Cells(fila, 3).Select
ActiveCell = precio
Cells(fila, 4).Select
ActiveCell = cantidad
Cells(fila, 5).Select
ActiveCell = total
Cells(fila, 6).Select
ActiveCell = fecha
End Sub
宏Limpiar_Datos()
:
Sheets("Hoja1").Select
Range("G7:G13").ClearContents
假设或我理解这条线Selection.End(xlDown).Select
选择或激活最后一个有值的单元格,但在我的情况下,它不是那样做的,它所做的是它总是选择或标记单元格B4为活动的
为什么那个单元格B4总是选择 me ,我该如何解决这个问题?
查看我的示例,我发现在我的案例B3中,我必须在标题行之前添加文本或值,并且我必须在该单元格B3中定位
Sheets("Hoja2").Select
Range("B3").Select
Selection.End(xlDown).Select
Dim fila As Integer
fila = ActiveCell.Row
fila = fila + 1
这样如果它工作正常但是有什么办法可以解决这个问题吗?
我没有被迫在标题行的前一个单元格中定位和添加文本,在我的例子中是B3。
尽管我不会为所有这些使用变量,因为您只执行一次,但以下是纠正各种细节的代码:
要找出这句话的实际作用,请转到
Selection.End(xlDown).Select
Excel 工作表,激活单元格 B1,按 End 键和向下箭头,您会注意到错误。如果不是激活 B1,而是激活 B4,则不会有任何问题。
你也可以用另一种方式来做,通过将宏定位在一个远处的单元格中,我想不可能到达,向下并告诉它找到第一个数据向上的单元格。
随着
fila = Range("B65000").End(xlup).Row
你得到最后一个数据的行。所以它会是这样的: