Excel开发学习笔记:根据工作表worksheet内容控制按钮的状态

开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序。

在Ribbon工具栏中有2个功能按钮,它们是否可用取决于worksheet(sheet1)中的内容。

button1需要在sheet1中存在某个关键字(比如“默认勾选”)的时候可用,在sheet1初始化和内容变更事件中添加代码,下面的Ribbon1.Button1是我项目中的工具栏和按钮名称

Public Function checkRow() As Boolean  
        Dim findCheck As Excel.Range = findLastCell("默认勾选") ‘findLastCell的定义见之前的blog  
        If (findCheck Is Nothing) Then  
            Return False  
        Else  
            Return True  
        End If  
    End Function  
      
    Private Sub Sheet1_Change(Target As Microsoft.Office.Interop.Excel.Range) Handles Me.Change  
        Globals.Ribbons.Ribbon1.Button1.Enabled = checkKpiRow()  
    End Sub  
      
    Private Sub Sheet1_Startup() Handles Me.Startup  
        Globals.Ribbons.Ribbon1.Button1.Enabled = checkKpiRow()  
    End Sub

button2需要当用户选中sheet1中某个关键字单元格(比如“名称”)的时候可用,在sheet1初始化、SelectionChange事件、工作表激活事件中添加代码

Private Function isSelectNameCell() As Boolean  
        With Application  
            If (.ActiveCell.Value Is Nothing) Then  
                Return False  
            End If  
            If (.ActiveCell.Value.ToString = "名称") Then  
                Return True  
            End If  
              
            Return False  
        End With  
    End Function  
      
    Private Sub Sheet1_Startup() Handles Me.Startup  
        Globals.Ribbons.Ribbon1.Button2.Enabled = isSelectNameCell()  
    End Sub  
      
    Private Sub Sheet1_SelectionChange(Target As Microsoft.Office.Interop.Excel.Range) Handles Me.SelectionChange  
        Globals.Ribbons.Ribbon1.Button2.Enabled = isSelectNameCell()  
    End Sub  
      
    Private Sub Sheet1_ActivateEvent() Handles Me.ActivateEvent  
        Globals.Ribbons.Ribbon1.Button2.Enabled = isSelectNameCell()  
    End Sub

时间: 2024-09-06 18:20:55

Excel开发学习笔记:根据工作表worksheet内容控制按钮的状态的相关文章

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

Excel开发学习笔记:查找与创建worksheet

开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 如题,我在ThisWorkbook.vb中添加了一个public函数来完成查找功能. 入参:待查找的sheet名称 返回:如果存在则返回worksheet对象,如果不存在则返回nothing Public Function WorksheetExist(name As String) As Excel.Worksheet          Try           

Excel开发学习笔记:文件选择控件、查找匹配项、单元格格式及数据有效性

遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. Private OpenFileDialog1 As New OpenFileDialog  Private Sub test()      OpenFileDialog1.Filter 

Excel开发学习笔记:新建文档级的excel解决方案

工作中遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO(没有用VBA),具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. Excel的开发方式有很多,比如VBA.vsto下的文档级程序.vsto下的插件程序等,VBA和文档级程序比较容易上手,开发简单的功能足够了,适合

Excel开发学习笔记:发布VSTO下的Excel开发项目

工作中遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学Excel开发一边动手实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO(没有用VBA),具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 因为是自用的小工具,对部署的要求很低,有个安装文件即可,也不要求兼容老版本的office.这样最简单的就是使用vs2010的pu

EXCEL 2010学习笔记 —— 数据透视表

今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3.更改数据透视表的组合 4.汇总多列数据,进行数据的分别统计 5.在透视表中利用公式进行计算 6.利用筛选字段创建多个工作表 1.创建数据透视表 从基本的操作层面来说:在获得了数据源之后,可以通过简单的插入功能和拖动命令生成一份数据透视表.创建一个新表格的时候,首先要确定最后的表格的行,列分别记录什么

VBA学习笔记之工作表

Sub 遍历sheets下的所有对象() For Each shs In Sheets k = k + 1 Cells(k, 1) = shs.Name Next End Sub Sub 遍历worksheets下的所能对象() For Each shs In Worksheets k = k + 1 Cells(k, 2) = shs.Name Next End Sub 两段代码的区别在于一个是sheets下的所有对象,一个是worksheets下的所有工作表对象 判断工作表存在与否: Sub

Excel开发学习笔记:VB.net的一些杂项

最近遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,最近终于完成了雏形.抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 动态数组vb自带的简单数组增删元素和改变大小不方便,.net提供的List类型很好用.比如下面定义了int类型的动态数组,第二句则是将 List(T) 的元素复制到

Excel开发学习笔记:读取xml文件及csv文件

读取xml文件 有好多种读取xml的方式,xmlDOM比较常见,我使用了另外一种,它以数据流的方式打开文件并读取内容 Imports System.Xml  Dim group As New List(Of String)  Using reader As XmlReader = XmlReader.Create(OpenFileDialog2.FileName)      While reader.ReadToFollowing("group")          reader.Mo