Tag: vba

Excel VBA:范围到string数组在1步

我知道你可以很容易地获取一系列的单元格,并将它们放入一个Variant数组中,但是我想使用一个string数组(因为它是单维的,并且占用的内存比Variant数组less)。 有没有办法自动将范围转换为string数组? 现在,我正在使用一个函数,它将采用范围并将值保存在variables数组中,然后将variables数组转换为string数组。 它工作得很好,但我正在寻找一种方式直接从范围到string数组。 任何帮助将不胜感激。 Function RangeToArray(ByVal my_range As Range) As String() Dim vArray As Variant Dim sArray() As String Dim i As Long vArray = my_range.Value ReDim sArray(1 To UBound(vArray)) For i = 1 To UBound(vArray) sArray(i) = vArray(i, 1) Next RangeToArray = sArray() End Function 更新:这看起来像没有办法跳过将数据转换为一维string数组之前,将数据放入一个variables数组的步骤。 如果是真的,那真可惜(即使不需要太多的努力,我也喜欢超优化,所以我希望有一种方法可以跳过这一步)。 如果没有解决办法,我会在几天内解决这个问题。 感谢有用的评论,伙计! 更新2:回答西蒙谁付出了很大的努力(所有其他人也一样),并指出从一个镜头范围到string排列确实是不可能的。 感谢大家。

简单的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!"

Excel VBA:parsing的JSON对象循环

下面的示例…从parsing的JSONstring中循环一个对象返回一个错误“对象不支持此属性或方法”。 任何人都可以build议如何使这项工作? 非常感谢(我在这里问了6个小时之前寻找答案)。 将JSONstringparsing到对象中的function(此工作正常)。 Function jsonDecode(jsonString As Variant) Set sc = CreateObject("ScriptControl"): sc.Language = "JScript" Set jsonDecode = sc.Eval("(" + jsonString + ")") End Function 循环通过parsing对象返回错误“对象不支持此属性或方法”。 Sub TestJsonParsing() Dim arr As Object 'Parse the json array into here Dim jsonString As String 'This works fine jsonString = "{'key1':'value1','key2':'value2'}" Set arr = jsonDecode(jsonString) MsgBox arr.key1 'Works […]

在multidimensional array上使用ubound的VBA

Ubound可以返回一个数组的最大索引值,但是在一个multidimensional array中,我将如何指定WHICH维度我想要的最大索引? 例如 Dim arr(1 to 4, 1 to 3) As Variant 在这个4x3arrays中,我将如何将Ubound返回4,以及如何将Ubound返回3?

在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进一步处理?

如何通过函数或自定义函数获得excel中的正则expression式支持?

似乎正则expression式(如在正则expression式中)不支持在Excel中,除了通过VBA。 这是如此,如果是的话,是否有任何支持正则expression式的“开源”自定义VBA函数。 在这种情况下,我正在寻找提取一个string内的复杂模式,但任何暴露在函数本身的正则expression式支持的自定义VBA函数的实现将是有用的。 如果你知道像IS函数这样的半相关函数,那么感觉要评论一下,尽pipe我真的在寻找一个通过函数公开的完整的正则expression式实现。 如果执行情况良好的话,甚至可以开始使用加载项。 另外,请注意,我在Windows 7上使用Office 2010; 添加此信息似乎是一个伟大的build议,而不是在Office 2010上工作的答案。 如果您有任何疑问,请发表评论。

Excel中的VBA函数可以返回一个范围吗?

我试图做这样的事情似乎是得到一个types不匹配的错误: 在新的工作簿中: A1 B1 5 4 Function Test1() As Integer Dim rg As Range Set rg = Test2() Test1 = rg.Cells(1, 1).Value End Function Function Test2() As Range Dim rg As Range Set rg = Range("A1:B1") Test2 = rg End Function Adding = Test1()应该返回5,但是代码似乎在从test2()返回范围时终止。 是否有可能返回一个范围?