Tag: excel vba

使用VBA查找Excel工作表中非空白列的数量

如何使用VBA查找Excel工作表中使用的列的数量? Dim lastRow As Long lastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row MsgBox lastRow 使用上面的VBA,我可以find行数。 但是,如何find我给定的excel文件中的列数?

在VBA中比较单词时是否要区分大小写?

我正在开发一个VBA程序,它允许用户input一个地址,并通过将地址元素与数据库进行匹配来查找位置。 不幸的是,我遇到了大小写敏感的问题。 例如,当我使用这个代码: For i = 11 To lRowB Range("B" & i).Activate myResult = IsNumeric(Application.Match(ActiveCell.Value, manilaListRange, 0)) 它将比较活动单元格的值与我的数据库中的单词列表。 问题是,如果在我的活动单元格中的单词是“迈阿密”或“迈阿密”,只有“迈阿密”在数据库中,它不会工作… 其他例子: If Range("J6").Value = "tawi" Then Range("J6").Value = "Tawi-Tawi" End If 同样的问题,只有用相同的案例写的字才会奏效。 我怎样才能摆脱这个? 这是特别恼人的,我不能在每种情况下重写我的数据库组合! 提前致谢 !

VBA Excel简单的error handling

我尽可能在网上查找(除了Microsoft支持网站,由于某种原因在工作中被阻止)。 我试图简单地跳过一个错误。 我写在这里的代码是简化的,但应该以同样的方式工作。 我的代码应该做什么:我的一个潜艇在循环中创build形状并命名它们(btn_1,btn_2等)。 但在创build它们之前,它会调用一个试图删除它们的子文件,以免创build重复文件。 这个子循环遍历(btn_1,btn_2等),并使用以下命令删除形状: for i = 1 to (a certain number) Set shp = f_overview.Shapes("btn_" & i) shp.delete next 当然,这种形状不可能被删除,因为它根本不存在。 我发现大多数时候,build议的修复方法是在设置形状之前添加(在接下来的错误恢复),因为我得到一个错误,说它不存在。 我已经尝试了循环内循环,等等,如下所示: for i = 1 to (a certain number) On Error Resume Next Set shp = f_overview.Shapes("btn_" & i) shp.delete next 据我了解,如果形状不存在,应该循环遍历,但是我仍然会得到相同的错误,无论我是否继续添加On error resume! 我究竟做错了什么? 编辑:形状确实存在没有错误。

Excel连接引号

我试图连接几个字段,并希望某些字段开始和引号(“…..”)结束。 当我把一个单元格(B2)放在里面的时候,单元格(B2)被显示为纯文本,并带有引号。 CONCATENATE("""B2""") -> "B2" CONCATENATE("""B2""") -> "(whatever is in cell B2)"

OnClick在Excel VBA中

有没有办法在Excel中用VBA捕捉单元格? 我不是指Worksheet_SelectionChange事件,因为如果多次单击单元格,将不会触发多次。 BeforeDoubleClick也无法解决我的问题,因为我不想要求用户双击那个顺序。 我目前的解决scheme与SelectionChange事件一起工作,但似乎需要使用全局variables和其他次优编码实践。 这似乎也容易出错。

简单的VBA代码给我运行时错误91对象variables或块未设置

所以当我点击一个命令button时,我有一个简单的macros/子定义。 问题是这给了我: 运行时错误“91”:对象variables或未设置块 我的代码是: Dim rng As Range rng = Sheet8.Range("A12") '<< ERROR here rng.Value2 = "1" 我只想在Sheet8中设置Cell“A12”。 谢谢!

使用VBA在Excel单元格中编写公式

我正在尝试使用VBA将公式写入Excel中的单元格。 我的问题是,当我在公式中使用分号( ; )时,出现错误: Error 1004 我的macros是以下内容: Sub Jours_ouvres() Dim Feuille_Document As String Feuille_Document = "DOCUMENT" Application.Worksheets(Feuille_Document).Range("F2").Formula = "=SUM(D2;E2)" End Sub

VBA复制工作表到工作簿结尾(带有隐藏的工作表)

我想复制一张纸并将其添加到当前所有纸张的末尾(不pipe纸张是否隐藏)。 Sheets(1).Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).name = "copied sheet!" 这工作正常,除了有隐藏的工作表时,新工作表只插入最后一个可见的工作表之后,所以name命令重命名错误的工作表。 我已经尝试了以下变体以获取对新复制的WorkSheet的引用,但没有一个是成功的和/或有效的代码。 Dim test As Worksheet Set test = Sheets(1).Copy(After:=Sheets(Sheets.Count)) test.Name = "copied sheet!"

在VBA(excel)中循环行的最有效/最快捷的方法是什么?

我知道Excel中的VBA不是最快的东西 – 但是我需要最有效的(即最快的)方法来循环大量样本行。 目前我有: For Each c In Range("$A$2:$A$" & Cells(Rows.count, "A").End(xlUp).row ' do stuff Next c “做的东西”包括在这里和那里插入一行(所以我需要保持范围的dynamic查找。) 任何想法(看10,000行+)? 编辑我已经在使用 Application.ScreenUpdating = False Application.Calculation = xlManual

获取用户select的范围

如何通过用户鼠标input来select一系列单元格,以便使用VBA进一步处理?