当我在 VBA 中调用 Thisworkbook.Protect 时,工作簿的保护实际上从当前工作簿的保护状态切换,而不仅仅是保护工作簿。
不过,Thisworkbook.Unprotect 不会执行此操作。
任何人都知道为什么会出现这种情况或如何解决它?
我有一些公共工作表变量,首先在工作簿打开时初始化.我有一个按钮,基本上这样做:
Dim Response As Variant
Response = MsgBox("Are you sure you want to delete this worksheet?", vbYesNo + vbExclamation, "Confirm Action")
If Response = vbNo Then
GoTo exit sub
End If
'Save workbook prior to deletion as a precaution
ThisWorkbook.Save
ActiveSheet.Delete
Run Code Online (Sandbox Code Playgroud)
由于某些原因,在运行之后,这些工作表变量不再被声明,我每次都必须重新初始化它们.我尝试在.Delete之后添加我的InitVariables宏调用,但它仍然不起作用.
有什么理由可能会发生这种情况?
我循环遍历命名范围并根据单元格是否为空来附加数组.我不太熟悉VBA中的数组,所以也许我的逻辑不正确.代码会一直覆盖数组中的第一个元素,并且永远不会增加.我不确定为什么即使将一个元素分配给第一个索引后,UBound(myArray)仍然保持为0.
我的代码看起来像:
Dim myArray() As Double
ReDim Preserve myArray(0)
For Each cell In [myRange]
If cell <> "" Then
If UBound(myArray) > 0 Then
ReDim Preserve myArray(0 To UBound(myArray) + 1)
End If
myArray(UBound(myArray)) = cell.value
End If
Next
Run Code Online (Sandbox Code Playgroud) 有什么方法可以在VBA中创建验证列表时显示默认值?到目前为止,我有:
.Cells(j, 7).Validation.Add Type:=xlValidateList, Formula1:="=" & "Listname"
Run Code Online (Sandbox Code Playgroud) 我希望能够检查代码是否选择了特定的选项按钮。
我在 Excel 工作表中制作了几个表单控件按钮,并尝试了类似的操作:
if Activesheet.myButton = true then
(do stuff)
endif
Run Code Online (Sandbox Code Playgroud)
但我收到“对象不支持此属性或方法”错误。
使用 ActiveX 选项按钮会更好吗?
我有一个单元格,其验证列表会根据其他设置而变化.是否可以在代码中迭代该单元格?是否也可以将该单元格设置为列表中的第n个项目?
例:
E2的下拉取决于为D2选择的内容.我希望能够遍历E2中的任何列表而无需检查D2.
谢谢.