我有一个非常庞大而复杂的应用程序,主要基于vba(+3500行代码):它导入和分析我学校每位老师的愿望(也是Excel中的wirtten)。然后,管理员可以编辑任何设置/愿望,以便明年教师资源的计划完成。
效果很好。功能几乎就像一个数据库。
我大量使用 Application.ScreenUpdating 和 Application.EnableEvents 来获得一个不错的无闪烁感(直观地看到工作表的变化) 但有时程序会在同一时间更新几张纸并导致闪烁问题(程序结构接近完美,但不完美)
是否有可能在没有激活此工作表的情况下获取工作表中的选择范围?获得想法:你在Sheeet1(Sheet1 激活)并想要获得Sheet2的(范围)。
我已尝试过Sheets(" Sheet2")。Selection.Address或Sheet2.Seledtion.Address,但它不起作用,因为Selection是一个Application-object。
有什么想法吗?
答案 0 :(得分:1)
如果工作表不是活动工作表,则它不能有选择也不能有活动单元格。无论打开多少工作簿或工作表或窗口,都有一个选择整个Excel应用程序实例。
这个怎么骗:在ThisWorkbook代码表中放了这段代码。
Option Explicit
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Sh.Names("Sel").Delete
On Error GoTo 0
Sh.Names.Add Name:="Sel", RefersTo:="='" & Sh.Name & "'!" & Target.Address(1, 1), Visible:=True
End Sub
无论何时在工作簿中的任何工作表上进行任何新选择,新选择都将成为工作表级别定义的名称。在Sheet1处于活动状态时,您可以使用
参考sheet2上的“选择”worksheets("sheet2").range("Sel")
'on a worksheet as,
=SUM(Sheet2!Sel)
存储这些命名范围,关闭工作簿并重新打开它。
我不能凭良心将此视为“最佳实践”。
答案 1 :(得分:0)
如果您不想选择
,请删除https://raw.githubusercontent.com/nlp-compromise/nlp-corpus/master/poe/man_of_crowd.txt
字样
selection
答案 2 :(得分:0)
Sheets("Sheet2").Range("A1:B10").Value
仅用于读取记录就足够了。