我有一本工作簿,我试图跟踪库存和销售的自行车。我有当前库存,1月销售,2月销售,3月销售,...,12月销售,2013年总销售额的工作表。
在当前库存中,我有自行车制造商A2,自行车模型B2,自行车类型C2,价格D2,序列号E2,日期销售F2和销售G2。在G列中,我有一个表单控件复选框。
我想要做的是当我点击复选框时,自行车及其所有信息被复制并粘贴到正确的工作表中(例如,如果它在2013年8月13日出售,它将被分类到8月销售工作表中)和2013年总销售工作表)以及2013年总销售工作表。另外,我希望检查的行将颜色从黑色变为绿色。在此先感谢您的帮助!
答案 0 :(得分:0)
确保你的复选框没有交叉到两个不同的行。一旦你确定了它,那么我会做这样的事情:
在宏中,我将添加以下代码:
Dim shp As Shape
Dim rng As Range
Dim currentRowNumber As Long
Set shp = ActiveSheet.Shapes(Application.Caller)
Set rng = shp.BottomRightCell
currentRowNumber = rng.Row
MsgBox "Currently, you are working on Row no " & currentRowNumber
获得行号后,您可以轻松找到值并相应地编写代码。
希望这有帮助!
谢谢, V
答案 1 :(得分:0)
首先考虑使用常规Cell而不是Checkbox(更简单,更好) 然后尝试下面的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim checkedMark As String
Dim currentRow As Integer, lastRow As Integer
checkedMark = "X"
If Target.Rows.Count <> 1 Then
Exit Sub
End If
If TypeName(Target.Value) <> "String()" Then
Exit Sub
End If
If UCase(Target.Value) <> checkedMark Then
Exit Sub
End If
If Target.Columns <> 7 Then
Exit Sub
End If
currentRow = Target.Row
Range(Cells(currentRow, 1), Cells(currentRow, 7)).Copy
With Sheets(BD_SHEET)
lastRow = .Range("A100000").End(xlUp).Row
Cells(lastRow + 1, 1).PasteSpecial xlPasteValues
End With
With Cells(currentRow, 1).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub