Tag: 词典

VBA查询循环scripting.dictionary

我有这个: Set dict = CreateObject("Scripting.Dictionary") rn = 2 Do While ThisWorkbook.Sheets("1").Range("B" & rn).Value <> "" If (ThisWorkbook.Sheets("1").Range("B" & rn).Value <> "") Then dict("&&1") = dict & ThisWorkbook.Sheets("1").Range("B" & rn).Value & ", " rn = rn + 1 Loop 但是这不起作用,我得到了VBA中的错误450。 它需要做的是:B列中的每个值(如果不是空的)必须被添加到由逗号分隔的字典中。 在最后一行之后,可能不会设置逗号。 我认为我是正确的,但也有缺失的东西。

双数组types不匹配

在处理编译错误时遇到一些麻烦。 我有一个类运行一些进程,并更新其全局variables。 我也有另一个类需要访问这些variables,所以我做了一个Scripting.Dictionary来保存{key, value}对。 这一切工作正常,我可以分配在class a的variables,并在class b使用它们只需通过引用它的关键词典。 我遇到的问题是:内部class b我做了一个函数调用,其中我已经引用我的Dictionary拉Double().的Double(). 这里是函数调用: TransMatrix = BuildMatrix(i, Control_O(), Control(), Control_Surv(), ClassCoreVariables("All_ACM")()) 请注意, ClassCoreVariables(All_ACM)是指我的词典。 为了完整起见,这里是上面的函数声明: Public Function TransMatrix(Treat As Integer, OverS() As Integer, OverSur() As Integer, Survi() As Variant, ACM() As Double) 当我尝试执行此代码时,出现以下错误: 编译错误:types不匹配:数组或预期的用户定义types 这使我感到困惑,因为我检查了这个types: Debug.Print TypeOf(ClassCoreVariables("All_ACM")() Returns: Double() 我也检查过,以确保数组不是空的(这不是),我也试图在研究networking后将types更改为Variant 。 我不确定如何进一步处理,并希望得到一些帮助。 如果我错过了任何相关信息,请提前询问和感谢。 更新 Debug.Print TypeName(ClassCoreVariables("All_ACM")()) 正在返回一个运行时错误: 运行时错误“9”:下标超出范围

VBA词典结果不能正确返回

我正在尝试使用字典来查找column F column C 键值 column C column F 值 。 但结果不会像我想要的那样回报。 它显示“0” 场景: 在column C 键将具有多个相同的值 2.我想根据按键总结column F所有值 ,并返回到"RAW" Range("C2") "Sheet2" "RAW" 请帮帮我。 提前致谢。 在这里我的代码。 Option Explicit Private Lrow As Long Private oDict As Object Private Sub CreateDict() Dim arrValues As Variant, oKey As Variant, oValue As Variant, i As Long 'Find Master Item […]

在VBA中使用Scripting.Dictionary迭代器会返回不正确的答案

我正在编写一些需要比较不同日子的测量结果的代码,测量的位置往往会在运行之间发生漂移。 我通过查看被测量的特定variables之一来调整它,将其在-100米到+100米的范围之间偏移,并查看后续读数之间的变化率(它们相距半米) ,平方差和看什么价值偏移最小化的平方和。 所以我有三种方法。 我可以在Excel中转​​储值,并使用偏移公式。 对于下面代码的例子,最小误差是当偏移量为259个读数时(29.5米为正值,假设200是使-100米达到无偏移量的量,并且每个读数是0.5米,所以59 * 0.5是29.5米)。 错误总和的值是2618.24690000001 – 这并不意味着太多,这只是现阶段的一个参考。 选项2是通过.GetRows方法将logging集结果传递给数组,并计算差异,而不使用Excel工作表和范围对象。 我得到了相同的答案 – 相当于259个读数,完全相同的错误总和,直到第15个数字。 选项3是将两个logging集的结果放在一个scripting.dictionary实例中,并使用这些实例计算错误。 在那里,我获得了59个读数的偏移,但是完全相同的误差数字的总和,再次是15个数字。 我已经testing了几个不同的地方,似乎总是有200个读数。 我已经通过代码,我已经search了这个网站,我甚至去看看从非StackOverflow网站(yuck!)的任何谷歌结果,我完全损失。 我敢肯定,这是我做过的非常简单(而且很可能非常愚蠢)的事情,而当我指出这一点时,我会很尴尬,但是我不能为了我的生活而努力。 arrays码: Private Sub array_manipulation(track_section As c_track_section) Dim ss_variance As Double, offset_variance As Double Dim ss_offset As Integer, i As Integer Dim record_count As Long Dim ref_array As Variant, run_array As Variant record_count = Application.WorksheetFunction.Min(track_section.rs.RecordCount, track_section.align_rs.RecordCount […]

基于通配符检索字典项目值 – VBA Excel

此刻,我正在运行一个字典,以便可以根据其中存储的键在表中填充缺失的值。 问题是我的表有更多的值(键)比在字典中存储的。 在某些情况下,我的表中的信息类似于字典中的某个键,我想知道是否可以使用通配符来检索项目。 示例如下: 字典中的示例logging: 奔驰(钥匙)车(项目) 川崎(钥匙)马达(项目) 让我们假设我的表有以下条目: Merc(钥匙)却遗漏了这个项目,在这种情况下应该是“汽车”。 是否有可能做到这一点? 如果这个例子不好,我很抱歉,但是我希望你们中的任何一个能够帮助我。 我发现了几个关于这个话题的文章: 字典的通配符search 如何search字典键的一部分? – VB.Net 先谢谢你!

在VBA中使用字典会给我的代码带来什么缺点?

我想知道如果在VBA中使用字典可以给我的代码带来任何缺点? 像兼容性问题一样,因为它不是来自VBA本地的 我不是编程方面的专家,但我习惯Python和它的字典。 现在我正在学习VBA,因为我需要自动化一些岩土结构的devise(使用Excel)和绘图(AutoCAD)。 我发现他们可以通过设置对MS Scripting运行时的引用在VBA中使用。 我是否应该对使用它们有任何顾虑? 像未来版本的Windows或Office兼容性问题?

VBA – 从一个字典中删除项目是否安全?

所以,我对VBA(Visual Basic For Applications)完全没有经验。 基本上,我有通过字典运行的代码,并从中删除某些元素。 下面是一个简单的例子(不在生产​​代码中): Dim testDict As New Scripting.Dictionary testDict.Add 1, 5 testDict.Add 2, 10 testDict.Add 3, 15 testDict.Add 4, 20 testDict.Add 5, 25 testDict.Add 6, 30 Dim Key As Variant For Each Key In testDict.Keys() If testDict.Item(Key) = 5 Then testDict.Remove (Key) End If If testDict.Item(Key) = 20 Then testDict.Remove (Key) End […]

在一个子中绑定了一个后期绑定的公共对象variables,当执行移动到下一个子时丢失内容

我有一个从Module1调用一些subs的表单。 在Module1中,我有一个公开声明的对象variables。 与该variables的想法是创build一个后期绑定的scripting.dictionary以避免添加太多的引用到我当前的vba项目。 该字典已成功创build并在Sub1中填充。 但是,一旦Sub1完成和Sub2被调用,我注意到字典variables已经恢复到它的原始types的对象。 login表单: Public progresslbl As Object, subprogresslbl As Object, progressbar As Object, webBr As Object Private Sub GetExports_Click() … … … progresslbl.Caption = "Requesting Exports" RequestExports 'Wait for all emails to be received (reset currentsupplier and count emails, wait for currentsupplier = suppliercount) WaitforEmails 'Still needs to be created 'Download Exports […]

VBA – scripting.dictionary空白

scripting.dictionary可能从范围中排除空白吗? 我正在使用此代码从范围中查找特殊值。 我不需要excel公式范围,但在VBA解决scheme(如果存在)。 有了这个代码,我在列表框中总是有一个空白项目。 Dim v, e With Sheets("DATA").Range("NAMED_RANGE") v = .Value End With With CreateObject("scripting.dictionary") .CompareMode = 1 For Each e In v If Not .Exists(e) Then .Add e, Nothing Next If .Count Then Me.TextBox121.List = Application.Transpose(.keys) ThisWorkbook.Worksheets("DICTIONARY").Range("B2").Resize(UBound(.keys), 1).Value = _ Application.Transpose(.keys) End With

VBA如何使用字典

我正在使用VBA中的字典出现问题。 我想从工作表添加值到字典。 如果我使用简单的列表,代码中没有错误。 喜欢这个。 Function Account(Place As String) As String Dim cities(500) Dim accounts(500) For i = 2 To 500 cities(i) = Worksheets("Sheet2").Cells(i, 2).Value accounts(i) = Worksheets("Sheet2").Cells(i, 3).Value Next i placeName = StrConv(Place, vbProperCase) Account = placeName End Function 这段代码没有给出问题,但是如果我为字典添加代码,就有一些问题。 Function Account(Place As String) As String Dim cities(500) Dim accounts(500) Dim dict Set dict = […]