下面的代码检查以确保某个单元格具有一个值,然后再将颜色更改回工作表的原始颜色.通过将颜色从黄色更改为纸张的原始颜色,用户可以进行打印.问题是,一旦输入值,当表单上的任何其他内容发生更改时,消息框将一直显示.消息框是否应放在工作表更改事件之外?我是编程的新手,所以任何帮助都表示赞赏!
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="Anthem"
If Range("G50").Value <> "" Then
MsgBox "You may now print"
Range("G50").Interior.Color = RGB(221, 235, 247)
End If
ActiveSheet.Protect Password:="Anthem", AllowFormattingRows:=True
End Sub
Run Code Online (Sandbox Code Playgroud)
谢谢,
安东尼
我从其他地方找到了这段代码,并对其进行了一些修改以满足我的需求,但我不完全确定它是如何工作的。我想知道它是如何工作的,因为我想进一步修改它,但我对 VBA 比较陌生,不明白 Resize、Index 和 Evaluate 函数如何在这个宏中协同工作。
Sub RearrangeColumns()
Dim newColumnOrder As Variant
newColumnOrder = Array(1, 2, 3, 4, 41, 42, 43, 44, 5, 6, 49, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, _
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, _
35, 36, 37, 38, 39, 40, 45, 46, 47, 48, 50, 51, 52)
Range("A1").Resize(Cells.Find("*", , xlFormulas, , xlRows, xlPrevious).Row, UBound(newColumnOrder) + 1) = …Run Code Online (Sandbox Code Playgroud)