【发布时间】:2014-01-20 17:53:31
【问题描述】:
在 Sheet1 上,我有三列需要在其中输入数据。三列总是在同一行结束,但最后一行会随着每组数据而变化。
Sheet2 获取 Sheet1 上三列中给出的信息,并将其与公式一起应用,这些公式将其设置为某种格式,我需要将其复制并粘贴到另一个程序的 txt 文件中。
Sheet2 上的公式都包含 IF(ISBLANK) 公式,仅当在 Sheet1 上输入数据时才会填充单元格。如果在 Sheet1 上没有输入数据,则 false 参数将“”返回到单元格。
我想要 Sheet1 上的宏或控制按钮,它将在 Sheet2 上复制 A6:B500 的范围,但前提是单元格填充有来自 Sheet1 的数据,使 IF 公式为真。
这是发生了什么的代码:
表 1 已解释,并没有什么特别之处。
工作表 2 包含以下内容,从 A6 开始,每 5 个单元格向下,直到到达 A:496
=IF(ISBLANK(Sheet1!A2),"","host "&(INDIRECT(E6))&" {")
这些公式还会继续更新 Sheet1 中单元格的位置。从 B7 到 B10 开始,有更多文本的类似公式,从工作表 1 中获取的单元格被更新,直到 B 列达到 B500,这些公式如下:
B7: =IF(ISBLANK(Sheet1!C2),"","hardware ethernet "&(INDIRECT(E7))&";")
B8: =IF(ISBLANK(Sheet1!B2),"","fixed-address "&(INDIRECT(E8))&";")
B9: =IF(ISBLANK(Sheet1!A2),"","option host-name "&""""&(INDIRECT(E9))&""";")
B10: =IF(ISBLANK(Sheet1!A2),"","}")
到目前为止,我的宏看起来是这样的:
Sub CommandButton1_Click()
Dim rng As Range
If Not Selection Is Nothing Then
Set rng = Sheets("Sheet2").Range("Sheet2!A6:Sheet2!B500").Cells.SpecialCells(xlCellTypeVisible)
rng.Copy
End If
End Sub
我遇到的问题是,无论输入什么数据,宏都会复制范围内的所有单元格,并且在我的可见数据之后有一堆空的新行。
【问题讨论】:
-
不确定我是否完全理解您的需求。部分问题似乎是确定最后填充的行。真的?如果是这样,您可以为此目的使用
UsedRange,例如maxRow = ActiveSheet.UsedRange.Rows.Count