宏仅在与引用的工作表相对的活动工作表中打印

时间:2014-02-24 14:13:10

标签: excel vba excel-vba

我编写了一个VBA宏,它尝试从用户表单中的文本框中获取值,并将它们复制到特定工作表上的单元格中。我还编写了一个countA函数,每次按下输入按钮时都可以写入一个新行。由于我无法理解的原因,无论我参考哪张表,它都只会写入活动工作表。请帮助!

Private Sub inputlight_Click()

Dim emptyrow As Long

'Find the first empty row after row 47 on sheet "T5 Input Sheet"

emptyrow = 47 + WorksheetFunction.CountA(Sheets("T5 Input Sheet").Range("b48:b219")) + 1

'transfer data

    Cells(emptyrow, 2).Value = esize.Value
    Cells(emptyrow, 3).Value = etype.Value
    Cells(emptyrow, 4).Value = ewatt.Value
    Cells(emptyrow, 5).Value = elamps.Value
    Cells(emptyrow, 6).Value = eusage.Value
    Cells(emptyrow, 7).Value = efixtures.Value

End Sub

我已经尝试将其更改为CountA(工作表(“T5输入表”),(表格(2)),(表格(“Sheet2”)等),但它们都不会打印到除活动单元格之外的任何内容。我做错了吗?

1 个答案:

答案 0 :(得分:0)

您使用CountA函数采用正确的方法,但是您还需要限定单元格以便将值粘贴到特定工作表。

Private Sub inputlight_Click()

    Dim emptyrow As Long

    'Find the first empty row after row 47 on sheet "T5 Input Sheet"
    emptyrow = 47 + WorksheetFunction.CountA(Sheets("T5 Input Sheet").Range("b48:b219")) + 1

    'transfer data
    With Sheets("SHEET_NAME")

        .Cells(emptyrow, 2).Value = esize.Value
        .Cells(emptyrow, 3).Value = etype.Value
        .Cells(emptyrow, 4).Value = ewatt.Value
        .Cells(emptyrow, 5).Value = elamps.Value
        .Cells(emptyrow, 6).Value = eusage.Value
        .Cells(emptyrow, 7).Value = efixtures.Value
    End With

End Sub

所以说SHEET_NAME就是你坚持目的地工作表名称的地方。