什么是良好的做法和良好的代码卫生?将代码放入模块或表格中?
我有这个Excel工作簿,每个工作表中都有用户界面.工作簿中的每个工作表都执行某项总体任务的不同部分.我应该将相关的代码放在Sheet对象或模块中吗?分组成一个模块,还是单独的模块?
我正在使用Excel 2003.
我正在检测Excel电子表格中某些单元格值的变化,如下所示......
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim old_value As String
Dim new_value As String
For Each cell In Target
If Not (Intersect(cell, Range("cell_of_interest")) Is Nothing) Then
new_value = cell.Value
old_value = ' what here?
Call DoFoo (old_value, new_value)
End If
Next cell
End Sub
Run Code Online (Sandbox Code Playgroud)
假设这不是一种编码方式,那么在更改之前如何获取单元格的值?
我有两列 - 列E扩展到99504(值),列I扩展到2691(值).列包含带扩展名的文件名.
像这样的东西
E I
TSL_groups.mrk pcbx_report.mrk
abcd.mrk jhuo.mrk
Run Code Online (Sandbox Code Playgroud)
等等...
我想查找列E中的文件(标题Filename_B)是否存在于E列(标题Filename_A)中.如果为true,则在新列中显示为TRUE,例如列K.
我怎么做?TIA.
我有一个触发一系列事件的按钮.其中一个事件是删除工作表.在用户删除任何内容之前,我弹出我的自定义YES/NO消息,要求他们确认整个过程.
然后是删除工作表的子事件,Excel弹出自己的窗口以确认删除工作表.问题是,如果用户在此时说"不",则会将我的应用程序设置为不一致状态.
如何绕过Excel要求确认删除工作表?
我的计算机上有两个计划任务.它们都打开excel文件并运行宏,并且与它们的功能非常相似.它们都在我的电脑上工作.但是我将计划的任务移到同事计算机上.一个人工作,另一个人没有.
没有工作的那个开了excel但是有一个错误说:
"对可视化基础项目的编程访问不受信任".
就像我说两个excel文件非常相似.没有工作的那个确实引用了另外两个项目,而另一个没有.他们是,
Microsoft Visual Basic for Applications Extensibility 5.3
Microsoft Windows Common Controls-2.6.0 (SP6)
Run Code Online (Sandbox Code Playgroud)
我之前从未遇到过这个错误.
如果我的字符串以换行符结束,我想从字符串中删除换行符.
Sub linebreak(myString)
If Len(myString) <> 0 Then
If Right$(myString, 1) = vbCrLf Or Right$(myString, 1) = vbNewLine Then myString = Left$(myString, Len(myString) - 1)
End If
End Sub
Run Code Online (Sandbox Code Playgroud) 许多人在Excel/VBA中使用大量数组来存储数据列表.但是,在我看来,收集对象更方便(主要是:不需要重新定义列表的长度).
所以,我真诚地问自己,我是否遗漏了什么?为什么其他人仍然使用数组来存储数据列表?这只是过去的宿醉吗?
我有一个固定的命令,我需要使用VBA传递给命令提示符,然后命令应该运行.例如"perl a.pl c:\ temp"
以下是我尝试使用的命令但它只是打开命令提示符并且不运行命令.
Call Shell("cmd.exe -s:" & "perl a.pl c:\temp", vbNormalFocus)
请检查.
我想在VBA代码中键入数学论坛,其中有许多行.我想将它分成许多行.我该怎么做?
例如:
U_matrix(i, j, n + 1) = k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n) + (k * (a_xyt(xi, yi, tn) / hx ^ 2 + d_xyt(xi, yi, tn) / (2 * hx)))
Run Code Online (Sandbox Code Playgroud)
很长 想分开它.
试过这个:
U_matrix(i, j, n + 1) = k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n)
_+ (k * (a_xyt(xi, yi, tn) / …Run Code Online (Sandbox Code Playgroud) 所以我试图使用VBA迭代Excel电子表格中的工作表.我想遍历每一行,然后遍历每一列,尽管谷歌搜索,我实际上找不到一个直观的方法来做到这一点.
我假设必须填充行的第一个单元格,如果不填充,则必须结束.我可以强制执行
我目前的方法是遍历行,然后尝试获取第一个单元格的值,但我无法弄明白.我在这里和其他地方遇到过一些使用范围等的问题,但没有什么可以帮助我编写代码.
目前的做法是:
Set sh = ActiveSheet
RowCount = 0
For Each rw In sh.Rows
'If Row.Cells(1, 1).Value = "" Then Exit For
RowCount = RowCount + 1
Next rw
MsgBox (RowCount)
Run Code Online (Sandbox Code Playgroud)
现在当我运行它时,我得到一些巨大的数字,这是错误的,因为该表只有大约25行.我评论了第一行,因为它不起作用.
当For Loop找到第一个单元格为空的行时,我可以在For循环的第一行中更改什么才能正确断开?