在VBa中选择动态单元格

问题描述

我有几列(从B到G),以B3开头的数字。今天,我选择数据并将其与宏一起复制到单元格B3中。明天我要将数据复制到单元格B4,第二天再复制到B5。

当月份结束时,应将数据复制到C3,....

现在,我每天必须在宏中更改所需的B3,B4。如何自动执行。

预先感谢

部分代码

Range("B47").Formula = "=SUM(B46-C46)"
Range("B47").Activate
Selection.copy
Sheets("VIP Punten").Select
Range("C33").Select "THIS HAS TO CHANGE EVERYDAY"
Selection.PasteSpecial Paste:=xlPasteValues,Operation:=xlNone,SkipBlanks _
    :=False,Transpose:=False

解决方法

您必须找到表的最后一行和最后一列。

Dim last_row As Long
Dim last_column As Long

last_column = ActiveSheet.Cells(3,Columns.Count).End(xlToLeft).Column
last_row = ActiveSheet.Cells(Rows.Count,last_column).End(xlUp).Row

您可以将其应用于代码,例如:

Dim last_row As Long
Dim last_column As Long


Range("B47").Formula = "=SUM(B46-C46)"
Range("B47").Activate
Selection.Copy
Sheets("VIP Punten").Select

last_column = ActiveSheet.Cells(3,last_column).End(xlUp).Row

Cells(last_row,last_column ).Select "THIS HAS TO CHANGE EVERYDAY"
Selection.PasteSpecial Paste:=xlPasteValues,Operation:=xlNone,SkipBlanks _
    :=False,Transpose:=False

其他建议:为优化代码,请尝试避免使用.Select,这样更优化

之前:

Cells(last_row,last_column ).Select 
Selection.PasteSpecial Paste:=xlPasteValues,Transpose:=False

之后:

Cells(last_row,last_column ).PasteSpecial Paste:=xlPasteValues,Transpose:=False

我希望我对您有帮助:)

,

所以,我尝试了

将ValueCell设置为变体

将wb1设为工作簿

ValueCell = wb1.sheets(“ Blad1”)。range(“ B2”)。value

wb1.sheets(“ Blad2”)。range(“ D1”)= ValueCell“

但是在ValueCell = ...上出错。