gpt4 book ai didi

vba - 在 VBA 中使用多个按钮添加数据

转载 作者:行者123 更新时间:2023-12-04 20:43:08 26 4
gpt4 key购买 nike

我正在尝试使用按钮作为工作表数据库的唯一输入。

6 buttons

只有按钮 1,2 和 3 会通过下面的代码将数据添加到我的工作表中

'Name for Button 1 = B_1 
Private Sub B_1_Click()

Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Database")

'find first empty row in database
iRow = ws.Range("A:D").Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1


'copy the data to the database
ws.Cells(iRow, 1).Value = Date
ws.Cells(iRow, 2).Value = Time
'This has to be bacon, tomato or cheese
ws.Cells(iRow, 3).Value = ???????
ws.Cells(iRow, 4).Value = 1

MsgBox "Data added", vbOKOnly + vbInformation, "Data Added"

Application.DisplayAlerts = False

ActiveWorkbook.Save

End Sub

IRow, 3 是我遇到问题的地方。我想先存储培根、番茄或奶酪的信息,然后按 2。工作表中的数据应如下所示。

日期 12/01/2015

时间 14:20

食物培根

数量 2

我以前使用文本框作为输入。

任何人都可以帮助我使用此代码。

谢谢

最佳答案

如果你想一次只处理一种食物,你应该使用选项按钮而不是命令按钮。选项按钮是互斥的 - 如果您选择奶酪,培根会自动取消选择。

如果您想一次处理多种食物,您应该使用切换按钮。切换按钮可以向上或向下,但它们不是相互排斥的。它们具有看起来像命令按钮的额外好处。

如果你想要选项按钮的互斥性,但你必须有一些看起来和工作起来像命令按钮的东西,那么你有几个选项,它们都不是最佳的:

  • 您可以使用标签条并隐藏除标签之外的所有内容。
  • 您可以设置一个模块级变量来记住最后按下的按钮。您可能想要添加代码来更改按钮的颜色,以便用户知道他们按下了哪个按钮。如果你这样做了,你可能不需要模块级变量,你可以只读取哪个按钮有颜色。
  • 您可以通过代码使切换按钮互斥。我个人会选择这个,以便您获得按下按钮的视觉效果。

  • 这是一些帮助您入门的代码
    Private mbEventsDisabled As Boolean

    Public Property Let EventsDisabled(ByVal bEventsDisabled As Boolean): mbEventsDisabled = bEventsDisabled: End Property
    Public Property Get EventsDisabled() As Boolean: EventsDisabled = mbEventsDisabled: End Property

    Private Sub tgBacon_Click()

    If Not Me.EventsDisabled Then ClearToggles Me.tgBacon

    End Sub


    Private Sub tgCheese_Click()

    If Not Me.EventsDisabled Then ClearToggles Me.tgCheese

    End Sub

    Private Sub tgTomato_Click()

    If Not Me.EventsDisabled Then ClearToggles Me.tgTomato

    End Sub

    Public Sub ClearToggles(tg As ToggleButton)

    Me.EventsDisabled = True

    Me.tgBacon.Value = Me.tgBacon.Name = tg.Name
    Me.tgCheese.Value = Me.tgCheese.Name = tg.Name
    Me.tgTomato.Value = Me.tgTomato.Name = tg.Name

    Me.EventsDisabled = False

    End Sub

    如果您有三个以上的切换,您需要重构 ClearToggles 子以循环而不是单独调用它们。
    Public Sub ClearToggles(tg As ToggleButton)

    Dim ctl As Control

    Me.EventsDisabled = True

    For Each ctl In Me.Controls
    If TypeName(ctl) = "ToggleButton" And ctl.Name <> tg.Name Then
    ctl.Value = False
    End If
    Next ctl

    Me.EventsDisabled = False

    End Sub

    关于vba - 在 VBA 中使用多个按钮添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174026/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com