我想在特定工作表上运行宏,在我的情况下,该工作表称为“平板电脑”。
如果“ Tabelle1”中的单元格值发生变化,我想在“平板电脑”表中运行此宏。
我的Tabelle1中的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
Call Delete_OptionB1
End If
End Sub
这部分有效。
宏代码:
Sub Delete_OptionB1()
'
' Delete_OptionB1 Makro
'
With Worksheets("Tablet")
.Range("M2:AD2").Select
Selection.ClearContents
End With
End Sub
这不会做。有什么建议可以使我正常工作吗?
答案 0 :(得分:2)
在代码中使用with块
With Worksheets("Tablet")
.Range("M2:AD2").Select
Selection.ClearContents
End With
您正在选择.Range("M2:AD2").Select
,但随后清除Delete_OptionB1
时可能处于活动状态的工作表上的选择内容。更改为包含。 -.Selection.ClearContents
。
更好的是,摆脱掉或者With...End With
和Select
一起摆脱。一行就可以完成所有操作:
Sub Delete_OptionB2()
'
' Delete_OptionB1 Makro
'
Worksheets("Tablet").Range("M2:AD2").ClearContents
End Sub
答案 1 :(得分:0)
代替……
Target
…如果Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Parent.Range("C2")) Is Nothing Then
Delete_OptionB1 'you don't need the Call statement
End If
End Sub
超过一个单元格,则最好使用Application.Intersect method使其起作用(在复制/粘贴范围时可能会发生这种情况):
Delete_OptionB1
如果Tablet.Delete_OptionB1
不在公共模块中,而是在工作簿中,请使用Delete_OptionB1
将.Select
设为公开,并避免使用Selection.
和Public Sub Delete_OptionB1() 'make it public
ThisWorkbook.Worksheets("Tablet").Range("M2:AD2").ClearContents
End Sub
(另请参见How to avoid using Select in Excel VBA)
import re
data = [
"word1 word2 0.1111 hyp1 hyp2 0.1111111111111111",
"word3 word4 0.2 hyp3 hyp4 0.07692307692307693",
"word5 word6 0.2 hyp5 hyp6 0.3333333333333333"]
pattern = r"^(\S+\s\S+\s\d+.\d+)\s(\S+\s\S+\s\d+.\d+)$"
pairs = []
for line in data:
match = re.match(pattern, line)
pairs.append(match.group(1).split())
pairs.append(match.group(2).split())
for pair in pairs:
print(pair)
print("======")
pairs.sort( key=lambda value: float(value[2]))
for pair in pairs:
print(pair)
答案 2 :(得分:0)
将其放置在Tabelle1
工作表代码区域中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$2")) Is Nothing Then
Application.EnableEvents = False
Call Delete_OptionB1
Application.EnableEvents = True
End If
End Sub
将其放在标准模块中:
Sub Delete_OptionB1()
'
' Delete_OptionB1 Makro
'
With Worksheets("Tablet")
.Range("M2:AD2").ClearContents
End With
End Sub