Tag: excel vba

如何在Excel VBA中切片数组?

Excel VBA中可以使用什么函数来切片数组?

在VBA的文本框中格式化MM / DD / YYYYdate

我正在寻找一种方法来自动将VBA文本框中的date格式化为MM / DD / YYYY格式,并且我希望格式化为用户input的格式。例如,一旦用户input第二个号码,程序会自动input“/”。 现在,我用下面的代码得到了这个工作(以及第二个短划线): Private Sub txtBoxBDayHim_Change() If txtBoxBDayHim.TextLength = 2 or txtBoxBDayHim.TextLength = 5 then txtBoxBDayHim.Text = txtBoxBDayHim.Text + "/" End Sub 现在,这在打字时效果很好。 然而,当试图删除时,它仍然input破折号,所以用户不可能删除过去的一个破折号(删除破折号导致长度为2或5,然后再次运行该子,join另一个破折号)。 任何build议更好的方式来做到这一点?

Excel VBA性能 – 100万行 – 在1分钟内删除包含值的行

我试图find一种方法来过滤大量数据,并在不到一分钟的时间内删除工作表中的行 目标: 在列1中查找包含特定文本的所有logging,并删除整行 保持所有单元格格式(颜色,字体,边框,列宽)和公式原样 。 testing数据: : 。 代码如何工作: 它首先closures所有的Excelfunction 如果工作簿不为空,并且要删除的文本值存在于第1列中 将第一列的使用范围复制到一个数组中 迭代数组中的每个值 当它find匹配时: 将单元格地址附加到格式为"A11,A275,A3900,…"的tmpstring中 如果tmp可变长度接近255个字符 使用.Range("A11,A275,A3900,…").EntireRow.Delete Shift:=xlUp删除行.Range("A11,A275,A3900,…").EntireRow.Delete Shift:=xlUp 将tmp重置为空,并移至下一组行 最后,它将所有Excelfunction重新打开 。 主要问题是删除操作 ,总持续时间应该在一分钟以内。 任何基于代码的解决scheme只要在1分钟内执行,都是可以接受的。 这将范围缩小到很less可接受的答案。 已经提供的答案也非常短,易于实施。 一个人在大约30秒内完成操作,所以至less有一个答案提供了一个可接受的解决scheme,其他人也可能会觉得它有用 。 我的主要初始function: Sub DeleteRowsWithValuesStrings() Const MAX_SZ As Byte = 240 Dim i As Long, j As Long, t As Double, ws As Worksheet Dim memArr As Variant, […]

为什么我有问题分配一个范围到一个variables数组

我有一些非常简单的代码行几个问题。 让我详细说明事实,看看是否有其他人可以复制这种行为。 如果任何人可以复制,我想解释为什么发生。 所以,让我从一个非常简单的代码行开始工作: Dim arr() As Variant arr = Range("A1:A10") 如预期的那样, arr被赋予A1:A10的值A1:A10 现在为什么不会有以下代码行? Dim arr() As Variant arr = WorkSheets("Sheet1").Range("A1:A10") 我得到了运行时错误'13'types不匹配,即使相同的范围已成功地分配给数组,即使没有工作表值。 但 Dim arr As Variant arr = Worksheets("Sheet1").Range("A1:A10") 和 Dim arr() As Variant arr = Application.Transpose(Application.Transpose(Worksheets("Sheet1").Range("A1:A10"))) 能工作吗? 现在,在你回答之前,请让我给你更多的事实。 Dim arr() As Variant arr = Worksheets(1).Range("A1:A10") 不起作用 并使用Sheets代替Worksheets也都给出了相同的错误。 我已经通过使用Range("A1:A10").Worksheet.Name确保它与活动参考图纸是一样的Range("A1:A10").Worksheet.Name在工作代码之后,它确实在输出中显示Sheet1 。 没有其他工作簿是开放的,所以它不能引用另一个工作簿。 现在,这最后一点的代码只会增加我的困惑,因为它完全有效! Dim arr() […]

如何返回在VBA中传递给它的(Variant)variables的维数

有谁知道如何返回在VBA中传递给它的(Variant)variables的维数?

使用VBA从Excel中的其他工作表获取值

你好,即时通讯新的Excel中,我有一些问题,从其他工作表获取值。 我在excel(sheet2)中有一些值,例如: ABCD – – – – 1 | 2 5 9 12 2 | 5 8 4 5 3 | 3 1 2 6 我正在使用sheet2中的这个值,我想在sheet1中得到结果。 当即时通讯使用我的代码在sheet2我得到正确的答案,但即时通讯尝试使用它在不同的表我得到的值的结果对应于当前表单元格,而不是sheet2。 我想得到第4行每列的总和,我设法做到这一点,但我只能在sheet2中使用它。 即时通讯使用“与Application.WorksheetFunction”,我想改变,以获取sheet2的值。 你能帮我解决这个问题,以及如何将sheet2设置为激活页面。 我希望我的问题很清楚。 谢谢

Excel VBA中的函数重载和UDF

我使用Excel VBA编写UDF。 我想用几个不同的版本来重载我自己的UDF,以便不同的参数可以调用不同的函数。 由于VBA似乎不支持这一点,任何人都可以提出一个好的,非杂乱的方式来实现相同的目标? 我应该使用可选参数还是有更好的方法?

按Esc时停止Excelmacros执行不起作用

我在XP上运行Excel 2007。 有没有办法阻止一个macros在执行过程中运行,而不是按下转义? 通常如果我认为我创build了一个无限循环或者其他的东西,那么我打了一个escape,它会抛出一个错误,但macros停止。 这一次(我已经做了,但没有这么糟糕),我build立了一个msgbox进行一些快速debugging。 原来,它必须循​​环大约6000次,这意味着我必须“确定”6000个消息框,这花了几分钟。 我没有保存之前运行(另一个错误),所以我不能打开任务pipe理器退出。 有没有另外一种方法来阻止macros的执行情况,如果我再次这样呢?

使用Excel VBA运行SQL查询

我对SQL和VBA相当陌生。 我已经写了一个SQL查询,我希望能够调用并从Excel工作簿中的VBA子运行,然后将查询结果放入工作簿。 我发现了一些在线(stackoverflow和其他地方)声称这样做,但我无法理解他们,因为他们不包含任何解释。 例如,这里是我在网上find的一个子文件: Sub ConnectSqlServer() Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String ' Create the connection string. sConnString = "Provider=SQLOLEDB;Data Source=INSTANCE\SQLEXPRESS;" & _ "Initial Catalog=MyDatabaseName;" & _ "Integrated Security=SSPI;" ' Create the Connection and Recordset objects. Set conn = New ADODB.Connection Set rs = New ADODB.Recordset ' Open the […]

通过代码在包装单元格中插入换行符

是否可以通过VBA代码在换行中插入换行符? (类似于手动input数据时按Alt – Enter ) 我已经通过VBA代码将单元格的wrap文本属性设置为True,并且还通过VBA代码向其中插入数据。