Vba 添加B7:b和E7:e列的文本值,并将值放在J7:j上,仅放在一张工作表上

Vba 添加B7:b和E7:e列的文本值,并将值放在J7:j上,仅放在一张工作表上,vba,excel,add,calculated-columns,Vba,Excel,Add,Calculated Columns,好的,我让第一部分处理一个主要问题。当我运行下面的代码时,它将为工作簿中的每一页显示一个文本值。我只需要它在“启动设备”页面的“J”中显示一个值。其他页面有不同的列标题。此外,它只会在手动运行宏时工作,我想知道它是否可以在用户输入设备状态时运行,这将实时更新另一页上的值。以下是我迄今为止一直在使用的代码,但效果有限 Sub calctestvalues() Dim lng As Long lng = Cells(Rows.Count, "B").End(xlUp).Row Range("J7:

好的,我让第一部分处理一个主要问题。当我运行下面的代码时,它将为工作簿中的每一页显示一个文本值。我只需要它在“启动设备”页面的“J”中显示一个值。其他页面有不同的列标题。此外,它只会在手动运行宏时工作,我想知道它是否可以在用户输入设备状态时运行,这将实时更新另一页上的值。以下是我迄今为止一直在使用的代码,但效果有限

Sub calctestvalues()

Dim lng As Long
lng = Cells(Rows.Count, "B").End(xlUp).Row
Range("J7:J" & lng).Value = Evaluate("=B7:B" & lng & "&E7:E" & lng)

End Sub

以下内容将在“启动设备”表的B列中找到最后一行,并写入正确的范围

Sub CalcTestValues()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lastRow As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Initiating Devices")

    lastRow = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
    ws.Range("J7:J" & lastRow).Value = Evaluate("=B7:B" & lastRow & "&E7:E" & lastRow)

End Sub

如果希望在用户输入数据时触发此命令,则需要
工作表\u Change
事件。这里有一个很好的参考资料可以帮助您入门:。

我现在正在查找有关使用工作表更改事件代码的信息。然后我将从上述代码中删除Sub-CalcTestValues()行,并将其放在工作表更改事件代码中。这当然会进入我假设的“启动设备”页面。我将玩一玩,看看会发生什么,再次感谢您的帮助。假设CalcTestValues现在按您想要的方式工作,只需从工作表\u更改处理程序调用它。我尝试将代码添加到工作表“INITIATING DEVICES”(启动设备)中,添加该代码时会使整个程序崩溃excel 2013。我只是简单地添加了上面的代码并使用了。私有子工作表_更改(ByVal目标作为范围)。实际上,我将它添加到了代码的末尾,因为还有其他几个代码使用相同的更改事件。我不能在这里发布整个代码,因为它不允许出现在评论中。当我的代码中有这样的内容时,当输入数据时,整个程序都会崩溃。最好的办法是创建一个新问题,询问如何让工作表\u更改事件部分正常工作。这里回答了你的主要问题吗?(只写一页)是的,主要问题已经回答了谢谢你的帮助,我将为最新的问题打开一个新问题。非常感谢。