我在Excel VBA中有这个简单的功能.
Public Function ubi() As Integer
Dim i As Integer
For i = 7 To 10
If IsNumeric(Cells(35, i).Value) Then
ubi = i
End If
Next
ubi = i
End Function
Run Code Online (Sandbox Code Playgroud)
如你所见,i应该是7或8或9或的值10.但是,当我在Excel工作表中测试函数时,我发现ubi()=11.
那么,我的代码中可能出现的错误来源是什么?
据我所知,他们做同样的事情,但同时
Worksheet_SelectionChange
Run Code Online (Sandbox Code Playgroud)
每次在单个工作表上更改选择时触发,
Workbook_SheetSelectionChange
Run Code Online (Sandbox Code Playgroud)
每次在工作簿中的任何工作表中更改选择时都会触发.
这些事件之间还有其他差异吗?
所以我创建了一个相当大的宏,它为我的公司创建了 PowerPoint 演示文稿。我希望能够使用以下方法为 2 个不同的区域运行它:
For each sRegion
MyMacro(sRegion)
Next
Run Code Online (Sandbox Code Playgroud)
有几行我想跳过。对于第一次运行,MyMacro 运行良好,错误处理程序会跳过这些步骤。但是对于下一个 sRegion 错误处理程序不起作用。
即使我逐行通过 on error resume next 语句,它也不起作用,实际上只是停止了宏。
我会在它中断的地方发布代码,尽管它完全无关(在第二次运行时,当首先调用宏时工作正常)
On Error Resume Next
PPPres.Slides(19).Moveto ToPos:=12
PPPres.Slides(20).Moveto ToPos:=13
PPPres.Slides(21).Moveto ToPos:=14
PPPres.Slides(22).Moveto ToPos:=15
PPPres.Slides(23).Moveto ToPos:=16
On Error GoTo 0
Run Code Online (Sandbox Code Playgroud)
它将完全忽略 on 错误并抛出错误并停止宏。
在有人建议是之前,我已经检查了错误捕获是否处于“中断未处理的错误”状态,并且它是
任何人以前遇到过这个问题或知道解决方案吗?
我正在撕扯我的头发.我已经尝试了我能想到的每一个变化:
cell = Application.WorksheetFunction.Average((i + 24, j + 2),(i + 70, j + 2))
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏!
我正在尝试创建一个执行B列总和的公式,直到列AEg发生任何变化
Col A Col B
1 X 2
2 X 1
3 X 0
4 X 2
5 Y 1
Run Code Online (Sandbox Code Playgroud)
从A1点开始,这将显示总和5.在这种情况下,A列总是会被排序(X,后跟Y,后跟Z等)
使用:Excel 2010
我的代码的这部分一直在失败,我不知道为什么.当我尝试运行整个代码块时,它返回"运行时错误'1004':无法设置Range类的Locked属性".
'Lock/unlock issue
ThisWorkbook.Sheets("Dashboard").Activate
ActiveSheet.Unprotect Password:="my password"
Selection.Locked = False
Selection.FormulaHidden = False
If Range("D20").Value <> "Document Recorded" Then Range("F24").Locked = True Else Range("F24").Locked = False
ActiveSheet.Protect Password:="my password", DrawingObjects:=True, Contents:=True, Scenarios:=True
Run Code Online (Sandbox Code Playgroud)
基本上,我想说:如果单元格D20不等于"Document Recorded",则锁定单元格F24,否则解锁单元格F24.
好吧,我确定这个问题非常基本,但我所有的搜索者都提出了复杂的答案,而且我一直在搞乱VBA大约一天.我在excel doc中有两个工作表,我创建了一个按钮,我可以单击它来调用我的宏,它只是将单元格从一个工作表移动到另一个工作表.但我需要我的宏来确定我在哪一行.我正在使用这个:
r = ActiveCell.Row
Run Code Online (Sandbox Code Playgroud)
确定我的行,但是在范围语句中使用该变量的最简单方法是这样的:
Range("A2").Select
Run Code Online (Sandbox Code Playgroud) Sub selectRange()
Dim A As String
A = ActiveCell.Address
MsgBox A
MsgBox Cells(A)
End Sub
Run Code Online (Sandbox Code Playgroud)
当我将A作为参数传递时,它显示错误我应该如何传递当前单元格数据的参数值.
我在 Excel 中有一个任意长的一列列表。我需要将此列表放在 SQL 服务器的 where 语句中。
有一种手动方法可以做到这一点: list 从A1 until A40. 使用B1="'"&A1&"',". 这将列表的每个元素包含在'',. NextC1=B1 and C2=C1&B2..C40=C39&B40
列表中的最后一个元素将被,手动删除。
Where recipID in ('1865','1733','1990')
如果我每年这样做一两次,一切都很好。但它变得越来越常规。我可以录制一个宏并以此为基础。但是,我更在寻找一个 2 合 1 宏,它不仅可以为 SQL 准备数据,还可以复制到剪贴板 - 这样唯一需要的操作就是选择列表、运行宏并粘贴到 SQL 中。
我的代码:
Sub sem()
Dim f As Variant
Dim f1 As Long
Dim F2 As Long
f = Format(DTPFechaFalla, "yyyymmdd")
f1 = 20141227
F2 = 20150124
If (f >= f1) & (f <= F2) Then
Week = 1
month = 1
Else
MsgBox "Fale"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)