小编Chr*_*007的帖子

简单功能中的奇怪输出 - Excel VBA

我在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应该是789或的值10.但是,当我在Excel工作表中测试函数时,我发现ubi()=11.

那么,我的代码中可能出现的错误来源是什么?

excel vba excel-vba

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

Worksheet_SelectionChange和Workbook_SheetSelectionChange事件的用法

据我所知,他们做同样的事情,但同时

Worksheet_SelectionChange
Run Code Online (Sandbox Code Playgroud)

每次在单个工作表上更改选择时触发,

Workbook_SheetSelectionChange
Run Code Online (Sandbox Code Playgroud)

每次在工作簿中的任何工作表中更改选择时都会触发.

这些事件之间还有其他差异吗?

excel vba excel-vba

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

出错继续下一步不工作

所以我创建了一个相当大的宏,它为我的公司创建了 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 错误并抛出错误并停止宏。

在有人建议是之前,我已经检查了错误捕获是否处于“中断未处理的错误”状态,并且它是

任何人以前遇到过这个问题或知道解决方案吗?

powerpoint vba

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

使用(i,j)格式平均范围

我正在撕扯我的头发.我已经尝试了我能想到的每一个变化:

cell = Application.WorksheetFunction.Average((i + 24, j + 2),(i + 70, j + 2))
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏!

excel vba excel-vba

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

汇总列B,直到A列有任何变化

我正在尝试创建一个执行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 excel-formula

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

锁定/解锁单元格的If-Then-Else代码仍然失败

使用: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.

excel vba excel-vba

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

在VBA excell宏中的范围语句中使用变量

好吧,我确定这个问题非常基本,但我所有的搜索者都提出了复杂的答案,而且我一直在搞乱VBA大约一天.我在excel doc中有两个工作表,我创建了一个按钮,我可以单击它来调用我的宏,它只是将单元格从一个工作表移动到另一个工作表.但我需要我的宏来确定我在哪一行.我正在使用这个:

r = ActiveCell.Row
Run Code Online (Sandbox Code Playgroud)

确定我的行,但是在范围语句中使用该变量的最简单方法是这样的:

Range("A2").Select
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

使用单元格地址获取单元格的值

Sub selectRange()
    Dim A As String
    A = ActiveCell.Address
     MsgBox A
     MsgBox Cells(A)
End Sub
Run Code Online (Sandbox Code Playgroud)

当我将A作为参数传递时,它显示错误我应该如何传递当前单元格数据的参数值.

excel vba excel-vba

0
推荐指数
1
解决办法
6941
查看次数

Excel 中的长一列列表,转换为 SQL where in 语句

我在 Excel 中有一个任意长的一列列表。我需要将此列表放在 SQL 服务器的 where 语句中。
有一种手动方法可以做到这一点: list 从A1 until A40. 使用B1="'"&A1&"',". 这将列表的每个元素包含在'',. NextC1=B1 and C2=C1&B2..C40=C39&B40
列表中的最后一个元素将被,手动删除。

示例 excel

Where recipID in ('1865','1733','1990')

如果我每年这样做一两次,一切都很好。但它变得越来越常规。我可以录制一个宏并以此为基础。但是,我更在寻找一个 2 合 1 宏,它不仅可以为 SQL 准备数据,还可以复制到剪贴板 - 这样唯一需要的操作就是选择列表、运行宏并粘贴到 SQL 中。

sql-server excel vba

0
推荐指数
1
解决办法
7684
查看次数

VBA类型不匹配时出错(错误13)

我的代码:

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)

excel vba excel-vba type-mismatch

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