我有一个VBA表单,有多种选择选项,包括下拉菜单,文本字段,复选框和无线电.
我只是想知道用按钮按下清除所有这些字段的最佳方法.我的一个朋友试图通过电子邮件向我发送下面的代码来帮助,但遗憾的是它不起作用,我检查了变量名称.
关于如何改进它的任何建议?
提前致谢.
Private Sub btnReset_Click()
Unload Me
UserForm.Show
End Sub
Run Code Online (Sandbox Code Playgroud)
这是userform的其他代码.
Dim DeptCode 'Holds department code
Private Sub UserForm_Initialize()
Dim c_deptCode As Range
Dim c_deptName As Range
Dim deptCodes As Variant
Dim deptNames As Variant
Dim ws_dept As Worksheet
Set ws_dept = Worksheets("lookupDept")
' Assign each range to an array containing the values
deptCodes = Choose(1, ws_dept.Range("deptCode"))
deptNames = Choose(1, ws_dept.Range("deptName"))
For i = 1 To ws_dept.Range("deptCode").Rows.Count
' Create the combined name (code + space + name)
CombinedName …Run Code Online (Sandbox Code Playgroud) 我在VBA中有一个UDF(用户定义函数),需要在Excel上修改单元格范围.
由于UDF无法做到这一点,我尝试使用事件调用.
当我提出自定义事件并尝试写入单元格时,我得到#Value错误.另一方面,Application事件
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)可以写入单元格.
我的问题是如何通过调用UDF更新其他单元格?
就我而言,这没有任何价值.我在研究问题时发现了这一点.
在VBA中:
鉴于以下内容: Dim a As Boolean, b As Boolean, c As Boolean
代码将a = b = c = 1 = 1
a赋值为False.
但是a = b = c = true指定了一个真实的.
任何人都可以解释为什么会这样吗?显然1 = 1评估为真.
作为旁注,a = 1 = 1也会将a指定为true.此外,使用变体而不是布尔值的行为是相同的.
我再次知道这没有实际意义,我只是好奇是否有人可以解释这种行为.
我工作的代码库在几个地方的代码类似于以下代码:
Dim i As Integer
Dim ints As New ArrayList
ints.Add(1)
'... lets say we add more Integers
For each i in ints.ToArray(GetType(Integer))
'Do something
Next
Run Code Online (Sandbox Code Playgroud)
我想知道.ToArray(GetType(Integer))从那以后在运行时几乎得到相同的结果,从中获得了什么好处.那是在呼唤For Each i In ints.我看到的唯一区别是,ArrayList如果你没有调用.ToArray(),如果结果错误消息中的某些类型不是Integer.
我为什么要使用ToArray(type)上ArrayList,如果我会做一个For Each地方已经指定类型的循环?
我想弄清楚如何加载每个UserForm而不必调用Userform1.Show UserForm2.Show等.这是受到这个答案的评论的启发:模块中的Excel VBA UserForm_Initialize().
我在几个地方发现了这种方法:
Sub OpenAllUserForms()
Dim uf As UserForm
For Each uf In UserForms
uf.Show
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,无论是否有多少附加到工作簿,都不会显示Userforms.当我逐步完成代码时,我确定UserForms集合是空的!
如何在不必明确显示每个Userform的情况下加载每个Userform?
我正在看下面的代码,我想知道如何阻止垃圾邮件点击,例如,如果你一次点击很多次,动画就会开始搞乱.
我怎样才能防止这种情况发生?只是有条件的工作?我尝试过但我无法让它发挥作用.
if isAnimating = true
如何使动画继续播放并阻止用户交互,直到完成.
我在我的数据库上运行一个非常简单的SQL查询,它似乎一遍又一遍地返回相同的记录,创建一个无限循环.也许我错过了一些明显的东西,但我没有看到它.这是查询:
select s.customer as 'Customer',
s.store as 'Store',
s.item as 'Item',
d.dlvry_dt as 'Delivery',
i.item_description as 'Description',
mj.major_class_description as 'Major Description',
s.last_physical_inventory_dt as 'Last Physical Date',
s.qty_physical as 'Physical Qty',
s.avg_unit_cost as 'Unit Cost',
[qty_physical] * [avg_unit_cost] as Value
from database.DELIVERY d,
database.STORE_INVENTORY s,
database.ITEM_MASTER i,
database.MINOR_ITEM_CLASS mi,
database.MAJOR_ITEM_CLASS mj,
database.STORE_INVENTORY_ADJUSTMENT sa
where sa.store = s.store
and s.last_physical_inventory_dt between '6/29/2011' and '7/2/2011'
and s.customer = '20001'
and s.last_physical_inventory_dt is not null
Run Code Online (Sandbox Code Playgroud)
有一条记录落在2011年7月1日,它会一直重复,直到我取消查询.
有什么帮助防止这种情况?
我曾多次使用与 SQL Server 相关的 VBA 宏,但它们始终是单个“select”语句或调用返回单个结果集的存储过程。现在我发现自己编写了一个宏来调用存储过程,但存储过程返回多个结果集。宏是否可以捕获每个 SQL 结果集并将其放在不同的工作表上?任何示例和/或指导将不胜感激。
vba ×5
excel ×2
excel-vba ×2
.net ×1
arraylist ×1
events ×1
handlers ×1
javascript ×1
jquery ×1
sql ×1
sql-server ×1
userform ×1
vb.net ×1
velocity.js ×1