AutoHotkey的函数对象的Bind方法绑定参数的应用
近期在写Excel数据批处理函数,想提取某列的每个数据是否匹配某某条件的所有单元格。
这种需求比较多,比如判断的值有:单元格值,字体颜色,单元格颜色等等,
判断条件有:相同,不同,正则,或在某多行字符串内等。
如果都写出来,可能会有N个函数,所以想统一用一个函数来循环,判断条件则用传入的函数来区分。
本文主要判断的是:判断某列数据是否和在多行字符串内。
比如我把产品的货号存到记事本文件(记事本文件相对固定,如果复制到当前Excel表的某列也可以),
然后判断单元格的货号是否和记事本内容匹配,这样就能提取出所有的单元格并存到arr供后面环节使用
rng := ComObjActive("Excel.Application").ActiveSheet.Range("A1:A20")
fun := Func("getLine").Bind(strFromTxt) ;核心,把函数getLine的第一个参数固定(strFromTxt用FileRead获取)
arrRes := loopCheckValueByFunc(rng, fun)
Msgbox(arrRes.Length() . "`n" . arrRes[1].Address . "`n" . arrRes[arrRes.Length()].Address)
Return
getLine(str1, str2) ;被判断的str1放第一个参数,可被Bind固定
{
Loop Parse, str1, "`n", "`r"
{
If (A_LoopField = str2)
Return A_Index
}
}
;遍历rng,找到符合函数条件的单元格
loopCheckValueByFunc(rng, funcObj, condition:=True)
{
xl := rng.Application
xl.ScreenUpdating := False
arr := []
For cellLoop In rng
{
;核心语句,每次循环,只需要传入当前单元格的值即可判断
;这句进行相应修改就能判断其他条件。
If (funcObj.Call(cellLoop.Value) = condition)
arr.Push(cellLoop)
}
xl.ScreenUpdating := True
Return arr
}
AutoHotkey的函数对象的Bind方法绑定参数的应用的更多相关文章
- [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法
js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...
- c++之函数对象、bind函数
函数对象实质上是一个实现了operator()--括号操作符--的类. class Add { public: int operator()(int a, int b) { return a + b; ...
- springmvc对象作为 目标方法的参数。
/** * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值.支持级联属性. * 如:dept.deptId.dept.address.tel 等 */ ...
- promise核心技术 1 实例对象/函数对象
一个程序员要在看到代码的语法同时判断数据类型 知道语法是基础 基础才能延伸功能 //一行代码 a()[0]() // a() 首先推断出a是一个函数 //a()[0] 判断a函数的返回值是一个数组 ...
- js学习进阶中-bind()方法
有次面试遇到的,也是没说清楚具体的作用,感觉自己现在还是没有深刻的理解! bind():绑定事件类型和处理函数到DOM element(父元素上) live():绑定事件到根节点上,(document ...
- Javascript中call,apply,bind方法的详解与总结
在 javascript之 this 关键字详解 文章中,谈及了如下内容,做一个简单的回顾: 1.this对象的涵义就是指向当前对象中的属性和方法. 2.this指向的可变性.当在全局作用域时,thi ...
- js的bind方法
转载:http://www.jb51.net/article/94451.htm http://www.cnblogs.com/TiestoRay/p/3360378.html https://seg ...
- call, apply,bind 方法解析
call(), apply(),bind() 三者皆为Function的方法 call(),apply()的作用是调用方法,并改变函数运行时的context(作用上下文) bind() 的作用是引用方 ...
- 浅析 JavaScript 中的 Function.prototype.bind() 方法
Function.prototype.bind()方法 bind() 方法的主要作用就是将函数绑定至某个对象,bind() 方法会创建一个函数,函数体内this对象的值会被绑定到传入bind() 函数 ...
随机推荐
- 使用c#特性,给方法或类打自定义标签再反射获取
给方法打自定义标签再反射获取 1.自定义特性类 using System; using System.Collections; using System.Collections.Generic; // ...
- spring mvc中的控制器方法中的参数从哪里传进来?
编写控制器方法的时候很奇怪,spring是怎么知道你控制器方法的参数类型,并且注入正确的对象呢? 比如下面这样 @RequestMapping(value="/register", ...
- Linux 命令 -- chown
chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组.用户可以是用户或者是用户D,用户组可以是组名或组id.文件名可以使由空格 ...
- Redis介绍与安装
一.redis简介 (一)什么是redis 1.redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 内存数据库. 2.特点:读写性能强悍 支持丰 ...
- Windows加密API的功能分类
本地数据加密保护本地数据加密保护机制提供了简单的DAPI调用接口,密钥管理等等一概由系统来处理.DAPI的数据加密保护机制在用户登录会话范围或者本地计算范围,使用操作系统设计的方式加密保护数据和解密还 ...
- bzoj 5319: [Jsoi2018]军训列队
Description Solution 最优情况可以是所有人按位置从小到大排序之后依次占到自己 \(K+\) 排名的位置上去 因为每一个休息位置不同,那么一定递增,所以一定存在一个分界点,左边的是往 ...
- 使用Charles为Android设备抓取https请求的包
之前开发的Android APP使用的都是http请求,之后改成了https,就出现了以下情况,无法正常读取抓取的内容 找了好多资料说法大概差不多,照着弄,结果出现如下情况,后来发现这种情况其实是手机 ...
- postgres entityframework foreignkey
public class Model { [Key, Column("id"), DatabaseGenerated(DatabaseGeneratedOption.Identit ...
- Netezza External Tables --How to use local files in external table
FROM: http://tennysusantobi.blogspot.com/2012/08/netezza-external-tables.html Netezza External Table ...
- MySql数据库与JDBC编程三
多表连接查询(两种规范 SQL92和SQL99) SQL92规范: 等值连接,非等值连接,外连接,广义笛卡儿积连接 多个表都放在from后,,连接条件放在where后,条件要求两列值相等,则为等值连接 ...