首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA调用外部对象01:字典Dictionary(Key的数据类型)

在前面的字典介绍中,我们添加Key的时候,没有特别的去注意Key的数据类型,我们先做1个这样的演示操作: ?...我们将A列的数据添加到1个字典中,和前面不同的操作是,我们没有用数组,而是直接使用了单元格对象,我们也知道单元格缺省的默认属性是Value,从图片中我们可以明显看到,数据是有重复的: Sub TestDic3...在前面我们讲过,用d.Add这种方法添加Key的时候,一旦有重复的Key,会出现上图中的错误,既然d.Add Cells(i, 1), i这个操作没有报错,那说明字典就是没有重复的Key,所以,我们应该去看看字典中真正存储的是什么...点击变量d的+号,展开查看变量里的数据,可以看到,17个Item,数据类型是Variant/Object/Range,我们可以理解它是或者的意思,所以,我们在字典中添加的并不是单元格的内容,而是单元格对象...3、小结 通过对字典Key的添加,了解字典Key虽然什么数据类型都可以传递进去,但是作为使用者一定要清楚自己要添加的数据是什么数据类型,并显示的进行转换,避免不必要的错误。

2.4K20

VBA调用外部对象01:字典Dictionary(统计数据出现的次数)

前面说过了字典去除重复的使用方法,既然字典可以去除重复,那就可以统计数据出现的次数,现在我们来说说如何利用字典来做到这个。...前面去除重复我们是直接更新Key的Item属性,利用的是字典不会保存重复Key的特点。 我们当时并没有特别注意Item的值,是直接使用了数据所在的行号,而且没有使用到这个Item的值。...统计数据出现的次数就是要使用到字典的Item值。...要统计数据出现的次数,因为字典是不会有重复的Key的,我们直接把Item的值加1就行了,这个时候是有2种情况: 不存在的Key:这个时候Item也不存在,也就是vbEmpty,CLng转换vbEmpty...'将A列数据记录到字典中,并更新Item的值+1 For i = 2 To rowA d(VBA.CStr(arrA(i, 1))) = VBA.CLng(d(VBA.CStr

3.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET----错误和异常处理机制

    异常类   在C#中当出现某个特殊的异常错误条件时,就会创建抛出一个异常对象,这个对象包含有助于跟踪问题的信息。....对于.Net类,一般的异常类System.Exception派生自System.Object,通常不在代码中抛出System.Exception泛型对象,因为他们无法确定错误情况的本质。   ...例如,如果.NET运行库检测到栈已满,他就会抛出StackOverflowException异常。...另一方面,如果检测到调用方法时参数不对,就可以在自己的代码中选择抛出ArgumentException异常或其子类。SystemException异常的子类包括表示致命错误和非致命错误的异常。...其他可能会用到的异常类包括: StackOverflowException-------如果分配给栈的内存区域已满,就会抛出这个异常。如果一个方法连续地递归调用自己,就可能发生栈溢出。

    66550

    【C# 基础精讲】字典(Dictionary)的使用

    添加元素 可以使用Add()方法向字典中添加键值对。如果键已经存在于字典中,则Add()方法将会抛出异常。...访问元素 可以通过键访问字典中的值。使用索引符号[]和键来获取对应的值。如果字典中不存在该键,则会抛出异常。为了避免抛出异常,可以使用TryGetValue()方法。...// 通过键访问字典中的值 int aliceAge = ageDict["Alice"]; // 获取"Alice"对应的值,此处为26 // 使用 TryGetValue() 避免抛出异常 if...ContainsKey和ContainsValue ContainsKey()方法用于判断字典中是否包含指定的键,返回一个布尔值。...bool hasAlice = ageDict.ContainsKey("Alice"); // 判断字典是否包含键"Alice" bool hasAge30 = ageDict.ContainsValue

    1.6K41

    Leetcode第一题:两数之和(3种语言)

    (就是说即使这个类在开头就说了不是void的,要返回一个int[]或者其他的东西,但是在最后抛出一个异常语法上是符合的。)对于本例,执行着就会从if下的return离开程序,所以不会抛出异常的。...简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针。...数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)。...obj可以是任何类型的对象。对同一个向量对象,亦可以在其中插入不同类的对象。但插入的应是对象而不是数值,所以插入数值时要注意将数组转换成相应的对象。...主要不同之处在于java的hashmap调用的方法有:put(key,value),get(key),containsKey() 而c++的map查找键值是否在为count。

    41440

    基础:C# try catch finally异常处理(Exception)

    参数格式错误 IndexOutOfRangeException 数组索引超出范围 InvalidCastException 使用无效的类 InvalidOperationException 方法的调用时间错误...MethodAccessException 试图访问思友或者受保护的方法 MissingMemberException 访问一个无效版本的DLL NotFiniteNumberException 对象不是一个有效的成员...平台不支持某个特定属性时抛出该错误 StackOverflowException 堆栈溢出 SystemException 运行时产生的所有错误的基类。...IndexOutOfRangeException 当一个数组的下标超出范围时运行时引发。 NullReferenceException 当一个空对象被引用时运行时引发。...InvalidOperationException 当对方法的调用对对象的当前状态无效时,由某些方法引发。 ArgumentException 所有参数异常的基类。

    17610

    小谈C#异常

    NET异常 以下是常见的.NET异常列表: System.NullReferenceException 这时最常见的异常,当我们尝试调用方法、属性、索引器等时,就有可能会抛出此异常。...person对象。...如果没有任何值,则它将返回该类型的默认值。由于Person是引用类型,因此其返回值为null。然后我们调用name,这时就会依引发空引用异常。...但是这各一场我们一般不会抛出也不会捕获,因为这个异常通常是因为我们编码不当考虑不周导致的。如果要向调用方告知不可传Null,则应该抛出System.ArgumentNullException异常。...System.StackOverflowException 当执行堆栈溢出时会抛出此异常,这通常意味着递归出错,代码有太多的嵌套方法调用。

    92210

    解析Exception和C#处理Exception的常用方法总结

    异常处理四要素包括:一个表示异常详细信息的类类型;一个向调用者引发异常类实例的成员;调用者的一段调用异常成员的代码块;调用者的一段处理将要发生异常的代码块。...System.InvalidOperationException 当方法调用对于对象的当前状态无效时引发的异常。...System.StackOverflowException 挂起的方法调用过多而导致执行堆栈溢出时引发的异常。    ...注意,没有指定异常类的 catch 子句可以处理任何异常。     找到匹配的 catch 子句后,系统将把控制转移到该 catch 子句的第一条语句。...(2).catch块:包含的是响应一个异常需要执行的代码。如果没有任何捕捉类型与抛出的异常匹配,CLR会去调用栈的更高一层搜索一个与异常匹配的捕捉类型。

    2.3K100

    Thinking In Design Pattern——Unit Of Work(工作单元)模式探索

    什么是Unit Of Work模式 Unit Of Work(工作单元)模式用来维护一个由已经被业务事物修改(增加、删除或更新)的业务对象组成的列表。...如果在持久化一系列业务对象(他们属于同一个事物)的过程中出现问题,那么应该将所有的修改回滚,以确保数据始终处于有效状态。...第一个字典对应于被添加到数据存储的实体,第2个字典跟踪带更新的实体,而第三个字典处理实体删除,与字典中的实体键匹配的IUnitOfWorkRepository将被保存下来,并用于Commit方法之中,来调用...Repository对象,该对象包含真正持久化实体的代码。...Commit方法遍历每一个字典,并调用相应的IUnitOfWorkRepository方法(传递实体引用)。

    2.7K50

    框架设计原则和规范(三)

    如果用户代码激活了一个线程并等自己需要的锁释放,那么很可能会产生死锁; 除了死锁,还可能引入“重入”:回调函数不知怎么调用到了那个调用他的对象。 1.1.4....隐式的抛出异常,即在调用其他方法时由其他方法抛出异常,是可以接受的。 2.2. 为抛出的异常选择合适的类型 2.2.1....要在捕获并重新抛出异常时使用空的throw语句。这是保持异常调用栈不变的最好方法。...如果对象处于不正确的状态,要抛出InvalidOperationException 如果参数本身不对应该用ArgumentException,这不依赖于任何其他对象的状态。...不要让公共API显式的或隐式的抛出这三个异常。这些异常是专门留给执行引擎来抛出的,大多数情况下它们表示代码存在缺陷 2.3.6. StackOverflowException 2.3.6.1.

    99960

    java面试热点:集合框架(二)

    它们之间的重要区别在于前者若操作失败会抛出一个异常,后者若操作失败会从返回值体现出来(比如返回false或null),我们可以根据具体需求调用它们中的前者或后者。...TreeMap中的元素的有序的,排序的依据是存储在其中的键的natural ordering(自然序,也就是数字从小到大,字母的话按照字典序)或者根据在创建TreeMap时提供的Comparator对象...UnsupportedOperationException异常,原因是调用了改变列表大小的add方法。...我们再看KeySet类定义的size()实例方法,它的实现就是通过直接返回HashMap的实例变量size。还有clear方法,实际上调用的就是HashMap对象的clear方法。...这个类中的所有方法在集合或类对象为空时均会抛出一个NullPointerException。

    57900

    【JavaSE专栏55】Java集合类HashTable解析,基于哈希表实现的唯一性键值对存储数据结构

    键和值的不允许为 null :HashTable 不允许键或值为 null 值,任何尝试插入 null 键或值的操作都会抛出 NullPointerException。...boolean containsKey = hashtable.containsKey(2); System.out.println("Contains key 2:...使用 containsKey() 方法和 containsValue() 方法判断 HashTable 中是否包含指定的键或值。...将配置项作为键,对应的配置值作为值,可以方便地进行配置的读取和更新。 字典、词频统计:HashTable 可以用于实现字典或者词频统计。...---- 五、总结 本文讲解了 Java 中集合类 HashTable 的语法、使用说明和应用场景,并给出了样例代码。在下一篇博客中,将讲解 Java 中类、对象、属性、方法的概念。

    44720

    SpringMVC底层数据传输校验重传方案

    团队的项目正常运行了很久,但近期偶尔会出现BUG。目前观察到的有两种场景:一是大批量提交业务请求,二是生成批量导出文件。出错后,再执行一次就又正常了。...3.3 DigestRestTemplate关键代码 对原json进行摘要,并同原始数据一起生成一个新的json对象。...函数核心部分,如果传入参数是 JSONObject,则调用方法对数据进行摘要操作,并用新生成的json进行传输。...,是有摘要的数据进行校验,否则直接返回对象。...仍然失败后考虑抛异常,由发送端上层代码处理。 但这个代码有一个很明显的问题,接收端的任何错误如数据保存失败,都会导致发送端重传数据。下面读一下Spring的代码,看看是如何处理异常的。

    69020

    C# 基础知识系列- 3 集合数组

    ) 查找下标 查找元素在列表中的下标,如果没找到元素,则返回-1 Sort()排序 对列表进行排序,调用方法后,会按照默认排序方法返回一个排序结果 1.3 Set 集合 C#没有为Set单独设置类,一方面是因为...1.3.1 HashSet 和SortSet HashSet 俗称 哈希集合或者哈希Set,内部使用Hash值作为元素的唯一性验证,即调用对象的HashCode()方法作为Hash值的来源。...字典对象,并包含这些键值对 // 传入一个字典对象,以传入的对象为基础创建一个字典 Dictionary dict3 = new Dictionary<string, int...Remove() 删除Dictionary中键对应的元素,删除后再次访问会报错。如果删除一个不存在的元素将返回flase。...第一个参数会校验是否属于该链表,如果不属于则会抛出一个异常。第二个可以是值,也可以是初始化好的节点对象。如果是节点对象,则判断是否归属其他链表,如果是其他链表抛出异常。

    1.3K30
    领券