我想通过说我在编码方面缺乏经验来作为序言。我一直在自己的工作项目上工作,最后遇到了一个我无法通过简单的谷歌搜索来解决的问题。
为了简要说明相关细节,我有一个工作簿,其中包含不同数量的工作表,每个工作表都有一个特定的文本单元格(稍后解释)和一个复选框。
我的目标是选择一系列单元格,通常连续1-5个,然后有一个按钮,根据特定条件更改所有工作表中相同选定单元格的颜色。标准是只更改上述单元格中列出“Office”的工作表,并且未选中复选框。
虽然我没有问题让Excel循环显示工作表并仅在符合条件的工作表上执行某些操作,但问题在于尝试编辑与主工作表上选择的相同的单元格。
到目前为止我提出的编码:
Dim cell As Range
Dim n As Integer
Set cell = Selection
If Range("AN6").Text = "Office" Then
For n = 1 To Sheets.Count - 2
If Sheets(n).Range("AN6").Text = "Office" And Sheets(n).CheckBox1.value = False Then
For Each cell In Selection
Sheets(n).Range(cell).Interior.ColorIndex = 56
Next cell
End If
Next n
End If
我得到的错误是:应用程序定义的错误或对象定义的错误。
希望有办法执行此操作。我非常感谢能得到的任何帮助。
答案 0 :(得分:0)
这应该有效:
Sub test()
With Selection
startRow = .Cells(1).Row
startColumn = .Cells(1).Column
endRow = .Cells(.Cells.Count).Row
endColumn = .Cells(.Cells.Count).Column
End With
If Range("AN6").Text = "Office" Then
For n = 1 To Sheets.Count - 2
If Sheets(n).Range("AN6").Text = "Office" And Sheets(n).CheckBox1.value = False Then
For Each cell In Range(Sheets(n).Cells(startRow, startColumn), Sheets(n).Cells(endRow, endColumn))
cell.Interior.ColorIndex = 56
Next cell
End If
Next n
End If
End Sub
答案 1 :(得分:0)
您可以使用范围的.Address属性。我很确定你收到一个错误,因为你的选择在一张纸上,你试着在另一张纸上引用那个范围。仅使用范围的地址应该可以解决该问题。
Dim cell As Range
Dim n As Integer
Set cell = Selection
If Range("AN6").Text = "Office" Then
For n = 1 To Sheets.Count - 2
If Sheets(n).Range("AN6").Text = "Office" And Sheets(n).CheckBox1.value = False Then
For Each cell In Selection
Sheets(n).Range(cell.Address(False,False)).Interior.ColorIndex = 56
Next cell
End If
Next n
End If
我对此代码进行的唯一测试是使用此子。我在工作表上选择了一个范围并运行了宏,而msg框则说Q12:U26
Sub test()
Dim cell As Range
Set cell = Selection
MsgBox cell.Address(False, False)
End Sub