zoukankan      html  css  js  c++  java
  • 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 }

      

  • 相关阅读:
    PHP $_POST 变量
    PHP $_GET 变量
    PHP 完整表单实例
    PHP 表单
    PHP 表单
    PHP 表单验证
    00_前情回顾
    18_今日回顾
    VMware 12PRO安装Mac OS X 10.10.5
    05_传智播客iOS视频教程_第一个OC程序
  • 原文地址:https://www.cnblogs.com/hyaray/p/10681205.html
Copyright © 2011-2022 走看看