我试图创建一个工作表宏,当在行的第一列中输入值时,将在同一行中填充具有默认值的特定单元格,并将输入的值从同一行复制到其他行中那一排的细胞。例如,当用户在2A中输入一些值时,单元格2C和2D分别自动填充数字10和20。然后,当用户输入2S中的值时,该相同值将自动复制回单元格2I和2J。
感谢Ralph提供的其他信息。根据我通过研究stackoverflow和一般互联网搜索的类似问题找到的内容,我将以下内容放在一起:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, S As Range, InteA As Range, InteS As Range, r As Range
Set A = Range("A:A")
Set S = Range("S:S")
Set InteA = Intersect(A, Target)
Set InteS = Intersect(S, Target)
Application.EnableEvents = False
If Not InteA Is Nothing Then
For Each r In InteA
r.Offset(0, 2).Value = "10"
r.Offset(0, 3).Value = "20"
Next r
ElseIf Not InteS Is Nothing Then
For Each r In InteS
r.Offset(0, -9).Value = Target
r.Offset(0, -10).Value = Target
r.Offset(0, -11).Value = Target
Next r
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub
答案 0 :(得分:0)
要运行宏,必须发生某种事件。每当对工作表进行任何更改时,尝试运行宏都很诱人,但想象一下它会触发多长时间?每时每刻。然后你必须担心10&当你不想要它们时,20会开始飞入那些单元格,并且如果你没有输入A列,就会写一些条件代码来跳过这个过程......
所以这里有一个您可能更喜欢的不同选项。在C和D列中输入公式,这将导致10&如果A中存在数据,则为20。
= IF(A2<>“,10,”“)或= IF(ISNUMBER(A2),10,0)......无论你喜欢什么。
然后选择标题行和数据行,在“插入”菜单上转换为真正的“Excel表格”。 (插入...表格)当您键入A列时,这会将公式扩展到新行。
宏避免?