添加一个内部函数,比如就叫“定位行数据”,然后输入下面的代码
- string strFind=Args[0].CType<string>("");
- List<string> lst=new List<string>();
- int intBegin=Proj.CurrentSmGrid.Selection.c1;
- int intEnd=Proj.CurrentSmGrid.Selection.c2;
- for (int i = intBegin; i <= intEnd; i++)
- {
- string strCellValue=Proj.CurrentSmGrid[Proj.CurrentSmGrid.Selection.r1,i].CType<string>("");
- if(strCellValue.Contains(strFind))
- {
- lst.Add(i.ToString());
- }
- }
- if(lst.Count>1)
- {
- MessageBox.Show("此次查找结果有"+lst.Count);
- }
- if(lst.Count>0)
- {
- Proj.CurrentSmGrid.Select(Proj.CurrentSmGrid.Selection.r1,lst[0].CType<int>(0),true);
- }
-
- return "";
复制代码
Vb.net的代码
- Dim strFind As String = Args(0)
- Dim lst As List(Of String) = New List(Of String)()
- Dim intBegin As Integer = Proj.CurrentSmGrid.Selection.c1
- Dim intEnd As Integer = Proj.CurrentSmGrid.Selection.c2
-
- For i As Integer = intBegin To intEnd
- Dim strCellValue As String = Proj.CurrentSmGrid(Proj.CurrentSmGrid.Selection.r1, i).ToString()
-
- If strCellValue.Contains(strFind) Then
- lst.Add(i.ToString())
- End If
- Next
-
- If lst.Count > 1 Then
- MessageBox.Show("此次查找结果有" & lst.Count)
- End If
-
- If lst.Count > 0 Then
- Proj.CurrentSmGrid.Select(Proj.CurrentSmGrid.Selection.r1, lst(0), True)
- End If
-
- Return ""
复制代码
然后在调用的时候使用
Proj.Functions.Execute("定位行数据","1128")
先用鼠标点击行标题,以实现整行选择,然后在命令窗口中执行上面的代码,即可在当前行中查找包含1128这个数值的单元格,如果单元格里面包含要查找的数据的,则会被计数。如果结果只查找到一个,则直接定位到相应的单元格,如果查找结果有多个,则会提示在当前行一共找到几个结果,然后再定位到第一个查找到的单元格。
|