在Excel中有没有办法编辑另一个工作表中的选定行?

时间:2011-03-17 10:32:59

标签: excel events vba

我很挣扎,想知道是否有任何简单的方法来引用当前/活动行中的单元格。

即。 - 我有2张,其中一张有很多信息,第二张我要显示来自Sheet 1上当前/活动行的信息。

所以说在第1页中选择了第5行。然后,如果你去了第2页,第5行的所有信息都将显示在工作表2上。然后,如果您在工作表1上选择第8行,则工作表2上的信息将是已更新为仅显示工作表1中第8行的信息。

当您返回到工作表1时,您在工作表2上所做的任何更改都会反映出来。

我可以在Sheet 2上的单元格中添加一个简单的公式吗?也许有些东西:

cell A1 on sheet 2 have =sheet1(active_row.colum1) 

and then cell A2 on sheet 2 have =sheet1(active_row.colum2) 

等等

我设法让它使用宏来工作,但唯一的麻烦是,当我更改工作表2上的信息时,它不会更新工作表1上的信息。如果有办法添加我的代码的这个功能,这将是伟大的。

这是我到目前为止的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myList
If Target.Address <> Target.EntireRow.Address Then Exit Sub
If Target.Rows.Count > 1 Then Exit Sub
myList = [{"B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","B11","B12","B13","B14","B15"}] '<- adjust to your need
With Target.EntireRow
    For i = 1 To UBound(myList)
        Sheets("sheet2").Range(myList(i)).Value = .Cells(i).Value
    Next
End With
End Sub

有什么建议吗? :)

2 个答案:

答案 0 :(得分:1)

简短的回答是否,Excel无法以这种方式运作:

你不能用公式做到这一点。没有适用于活动工作表或其他工作表上的活动单元格的函数。此外,当您更改选择或在工作表之间移动时,Excel计算引擎无法识别是否需要重新计算。

答案 1 :(得分:0)

是的,你可以这样做,但有点复杂

您希望在工作表1上选择的行显示在工作表2上,然后能够编辑工作表2以自动更新工作表1。

您需要做的是按原样使用Selection事件,并将该行复制到Sheet 2.然后您必须使用Sheet 1上的Activate事件将行复制回Sheet 1.请注意以下内容代码假定工作表1在单元格中没有工作表函数(公式),您仍然可以这样做,但您必须保留公式并替换它们。

第1页代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address <> Target.EntireRow.Address Then Exit Sub
If Target.Rows.Count > 1 Then Exit Sub

Target.EntireRow.Copy
Sheets("Sheet2").Activate
Sheets("Sheet2").Range("A1") = Target.Row
Sheets("Sheet2").Rows(2).PasteSpecial (xlPasteValues)

End Sub

第2页代码:

Private Sub Worksheet_Deactivate()

If Sheets("Sheet2").Range("A1") > 0 Then
  Sheets("Sheet2").Rows(2).Copy
  Sheets("Sheet1").Activate
  ActiveSheet.Rows(Sheets("Sheet2").Range("A1")).EntireRow.PasteSpecial (xlPasteValues)
  Sheets("Sheet2").UsedRange.ClearContents
End If

End Sub