Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: sdada

[已解决]能不能限制按钮点击次数?

[复制链接]
 楼主| 发表于 2013-6-24 10:39 | 显示全部楼层
妞叫七七 发表于 2013-6-24 10:34
关键是你在open事件中添加了重置命令和重新添加新命令,你可以把k的值放在单元格里,在添加后判断k的值,如果k ...

要不设置到哪个日期,就不能用?
回复

使用道具 举报

发表于 2013-6-24 10:47 | 显示全部楼层
sdada 发表于 2013-6-24 10:39
要不设置到哪个日期,就不能用?

Private Sub Workbook_Open()
    With Application.CommandBars(1)
        .Reset
        With .Controls.Add(Type:=msoControlPopup)
            .Caption = "测试"
            With .Controls.Add(Type:=msoControlButton)
                .Caption = "按钮1"
                .OnAction = "aaa"
            If Date > #1/1/2013# Then .Enabled = False
            End With
            With .Controls.Add(Type:=msoControlButton)
                .Caption = "按钮2"
                .OnAction = "bbb"
           If Date > #1/1/2013# Then .Enabled = False
            End With
        End With
    End With
End Sub

回复

使用道具 举报

 楼主| 发表于 2013-6-24 12:20 | 显示全部楼层
妞叫七七 发表于 2013-6-24 10:47
Private Sub Workbook_Open()
    With Application.CommandBars(1)
        .Reset

#1/1/2013#
#号键是什么意思?
回复

使用道具 举报

发表于 2013-6-24 12:30 | 显示全部楼层
sdada 发表于 2013-6-24 12:20
#1/1/2013#
#号键是什么意思?

在VBA中 日期两边加# ,表示是日期格式
回复

使用道具 举报

 楼主| 发表于 2013-6-24 13:11 | 显示全部楼层
本帖最后由 sdada 于 2013-6-24 22:11 编辑

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars(1).Reset
    Open Application.Path & "\Select.txt" For Output As #1
    Print #1, b(0)
    Print #1, b(1)
    Close #1
End Sub
Private Sub Workbook_Open()
    Dim mFile As String, mStr2 As String, mStr
    mFile = Application.Path & "\Select.txt"
    If Dir(mFile) <> "" Then
        Open mFile For Input As #1
        Do Until EOF(1)
            Line Input #1, mStr
            If mStr2 = "" Then mStr2 = mStr Else mStr2 = mStr2 + vbNewLine + mStr
        Loop
        Close #1
        mStr = Split(mStr2, vbNewLine)
        b(0) = Val(mStr(0))
        b(1) = Val(mStr(1))
    Else
        b(0) = 5
        b(1) = 5
    End If
   
    With Application.CommandBars(1)
        .Reset
        With .Controls.Add(Type:=msoControlPopup)
            .Caption = "测试"
            Set a(0) = .Controls.Add(Type:=msoControlButton)
            With a(0)
                .Caption = "按钮1"
                .OnAction = "aaa"
                .Enabled = (b(0) <> 0)
            End With
            Set a(1) = .Controls.Add(Type:=msoControlButton)
            With a(1)
                .Caption = "按钮2"
                .OnAction = "bbb"
                .Enabled = (b(1) <> 0)
            End With
            With .Controls.Add(Type:=msoControlButton)
                .Caption = "恢复"
                .OnAction = "ccc"
            End With
        End With
    End With
End Sub

Public a(1) As CommandBarControl, b(1) As Integer
Sub aaa()
    b(0) = b(0) - 1
    MsgBox "你好:" & Chr(10) & "还有:" & b(0) & "使用次数"
    If b(0) = 0 Then a(0).Enabled = False
End Sub
Sub bbb()
    b(1) = b(1) - 1
    MsgBox "欢迎:" & Chr(10) & "还有:" & b(1) & "使用次数"
    If b(1) = 0 Then a(1).Enabled = False
End Sub

Sub ccc()
    b(0) = 5
    b(1) = 5
    a(0).Enabled = True
    a(1).Enabled = True
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-6-24 21:57 | 显示全部楼层
本帖最后由 sdada 于 2013-6-24 22:10 编辑

在thisworkbook模块中:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars(1).Reset
End Sub
Private Sub Workbook_Open()
    With Application.CommandBars(1)
        .Reset
        With .Controls.Add(Type:=msoControlPopup)
            .Caption = "测试"
            Set a(0) = .Controls.Add(Type:=msoControlButton)
            With a(0)
                .Caption = "按钮1 [5]"
                .OnAction = "aaa"
            End With
            Set a(1) = .Controls.Add(Type:=msoControlButton)
            With a(1)
                .Caption = "按钮2 [5]"
                .OnAction = "bbb"
            End With
        End With
    End With
End Sub
在模块中:
Public a(1) As CommandBarControl
Sub aaa()
    Dim N As Integer
    N = Val(Split(a(0).Caption, "[")(1))
    N = N - 1
    a(0).Caption = "按钮1 [" & N & "]"
    MsgBox "你好"
    If N = 0 Then a(0).Enabled = False
End Sub
Sub bbb()
    Dim N As Integer
    N = Val(Split(a(1).Caption, "[")(1))
    N = N - 1
    a(1).Caption = "按钮1 [" & N & "]"
    MsgBox "欢迎"
    If N = 0 Then a(0).Enabled = False
End Sub
回复

使用道具 举报

发表于 2013-6-25 14:09 | 显示全部楼层
不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 06:38 , Processed in 0.325252 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表