小编Kin*_*ong的帖子

Workbook.通过切换保护来保护错误

当我在 VBA 中调用 Thisworkbook.Protect 时,工作簿的保护实际上从当前工作簿的保护状态切换,而不仅仅是保护工作簿。

不过,Thisworkbook.Unprotect 不会执行此操作。

任何人都知道为什么会出现这种情况或如何解决它?

excel vba spreadsheet-protection

5
推荐指数
1
解决办法
469
查看次数

删除工作表后不再声明VBA全局变量

我有一些公共工作表变量,首先在工作簿打开时初始化.我有一个按钮,基本上这样做:

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宏调用,但它仍然不起作用.

有什么理由可能会发生这种情况?

excel vba excel-vba

5
推荐指数
1
解决办法
405
查看次数

在VBA中追加动态数组

我循环遍历命名范围并根据单元格是否为空来附加数组.我不太熟悉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 dynamic-arrays

4
推荐指数
2
解决办法
3万
查看次数

VBA验证列表的默认值

有什么方法可以在VBA中创建验证列表时显示默认值?到目前为止,我有:

.Cells(j, 7).Validation.Add Type:=xlValidateList, Formula1:="=" & "Listname"
Run Code Online (Sandbox Code Playgroud)

validation excel vba

3
推荐指数
1
解决办法
6496
查看次数

如何检查是否选择了选项按钮

我希望能够检查代码是否选择了特定的选项按钮。

我在 Excel 工作表中制作了几个表单控件按钮,并尝试了类似的操作:

if Activesheet.myButton = true then

     (do stuff)

endif
Run Code Online (Sandbox Code Playgroud)

但我收到“对象不支持此属性或方法”错误。

使用 ActiveX 选项按钮会更好吗?

excel vba radio-button

3
推荐指数
1
解决办法
2万
查看次数

迭代Excel下拉列表/验证列表

我有一个单元格,其验证列表会根据其他设置而变化.是否可以在代码中迭代该单元格?是否也可以将该单元格设置为列表中的第n个项目?

例: 在此输入图像描述 E2的下拉取决于为D2选择的内容.我希望能够遍历E2中的任何列表而无需检查D2.

谢谢.

validation vba drop-down-menu

2
推荐指数
1
解决办法
8322
查看次数