我尝试使用按钮作为工作表数据库的唯一输入。
只有按钮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
食物BACON
数量2
我之前使用过文本框作为输入。
任何人都可以帮我解决这个问题。
由于
答案 0 :(得分:1)
如果您想一次只使用一种食物,则应使用Option Buttons而不是Commandbuttons。选项按钮是互斥的 - 如果选择奶酪,则会自动取消选择培根。
如果你想一次处理多种食物,你应该使用Toggle Buttons。切换按钮可以向上或向下,但它们不是互斥的。它们具有看起来像Command Buttons的额外好处。
如果你想要Option Buttons的互斥性,但是你必须拥有看起来和像Commandbutton一样的东西,那么你有几个选择,没有一个是最优的:
这里有一些代码可以帮助您入门
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