我对VBA很新,与我在这里阅读的内容相比,Excel知识有限。我的宏很麻烦。我有一张4张工作簿。每个工作表都有基本的命令按钮,用于发出一个简单的宏(从一个单元格值减去1,在另一个单元格中添加1)。我遇到问题的地方是为3个按钮创建宏代码。这些按钮需要发出类似的命令,但我需要它们来调整所有工作表中的选择单元格值,而不仅仅是按钮所在的活动工作表。
这3个特定的命令按钮位于“表4”上。单元格位于所有4个工作表中。我可以创建一个宏(通过单击按钮激活),可以在所有4个工作表中使用吗?
按钮1 - 需要在工作表4上将单元格g10的值加1 - 但也从单元格c4&的值减1表2中的c7 - 表3中单元格c6的值减去1。
其他按钮都是这样的。我希望这解释得足够多。我目前正在阅读关于Excel和VBA的书籍,但是很忙,这很慢。任何帮助是极大的赞赏。先感谢您。冷淡的:))
答案 0 :(得分:1)
您只需要为每个按钮添加一个事件,然后在子例程中,在操作包含的单元格时专门命名工作表。 Avoid using select statements只需进行所需的更改即可。我展示了一些不同的方法来做同样的事情,以便将来你可以根据自己的需要进行调整。有时你会想要专门命名Range。有时您会希望它由其他代码或循环动态创建。
点击按钮有一个事件处理程序。
Private Sub Button1_Click()
Call ChangeVals
End Sub
您需要从每个按钮点击事件中调用该子。
Private Sub Button2_Click() 'Repeat for the other two.
Call ChangeVals
End Sub
这是更改值的实际子。
Private Sub ChangeVals()
'Using Range(ColRow)
Sheets("Sheet4").Range("G10") = Sheets("Sheet4").Range("G10").Value + 1
'Using Cells(rowNumber, ColLetter) ----This is good if the column won't change.
Sheets("Sheet2").Cells(4,"C") = Sheets("Sheet2").Cells(4,"C").Value - 1
'Using Cells(rowNumber, ColNumber) ----This is my preferred way, loopable with numbers.
Sheets("Sheet2").Cells(7,3) = Sheets("Sheet2").Cells(7,3).Value - 1
'Lastly
Sheets("Sheet3").Range("C6") = Sheets("Sheet3").Range("C6").Value - 1
End Sub
答案 1 :(得分:0)
考虑:
Sub buttton1()
Dim r1 As Range, r2 As Range, r3 As Range
Set r1 = Sheets("Sheet4").Range("G10")
Set r2 = Sheets("Sheet2").Range("C4,C7")
Set r3 = Sheets("Sheet3").Range("C6")
r1 = r1 + 1
r2 = r2 - 1
r3 = r3 - 1
End Sub