2017-04-26 55 views
0

我不熟悉编码,我正在尝试在店内为我的小吃小屋设置一个简单的POS。代码的作品,但我有很多项目出售。我有主线宏定位按钮,即时通讯只是想知道是否有方法从cs输入结果到.Range()这样我不必在每行中手动更改代码,而不是有一个代码将自行定位按钮并自动选择单元格并输入其值。Excel单击销售表单按钮

Sub btn1_Click2() 
Static value As Integer 
value = value + 1 
'Mainlineup Macro 
Dim b As Object, cs As Integer 
Set b = ActiveSheet.Buttons(Application.Caller) 
With b.TopLeftCell 
cs = .Row 
End With 
Worksheets(1).Range("D$").value = value 
End Sub 

回答

0

很好的努力!这应该有助于你开始考虑细胞及其价值。每个细胞都是一个“范围”,但不是 - 通过叹息 - 每个细胞都是一个细胞。

首先将保留字“Value”的使用指定给Excel。如果您使用同一个词来标识您的一个变量,那么您和Excel都会出现混淆。 Excel中会有无法解释的“错误”。

Range("D$")未定义单元格,因为单元格同时具有行和列。该术语将引发错误,这是可预测的,因为术语既没有定义范围也没有定义单元格。

当您在VBA中定义单元格时,我建议您使用行&列来定义它,如ActiveSheet.Cells(3, 5)这是工作表中的“E3”。 VBA的确了解ActiveSheet.Range("E3")。所以真正的问题是你是否做。一旦使用行&开始操作单元格和范围,列更容易计算,因为计算数字比名称更容易。

不幸的是,我不明白你的意图。但是,通过为单元格的Value属性赋值,您正处于正确的轨道上。您还可以将值分配给一个范围的Value财产,但Range("D:D").Value = 4将相同的值分配给每一个细胞中列D.

也许这是你脑子里想的是什么。 Worksheets(1).Range("D" & Cstr(cs))).Value = value。我会这样写:Worksheets(1).Cells(cs, 4).Value = value。也许Worksheets(1).Cells(cs, "D").Value = value将是一个妥协。

为了以防万一,我指出b.TopLeftCell是一个单元格(因此也是一个范围),因此具有Value属性。像Worksheets(1).Cells(cs, 4).Value = b.TopLeftCell.Value这样的代码将是完全合法的,并按照您的期望执行它的外观。

+0

我非常感谢您的帮助。我其实有.Range(“D2”)。该按钮使用我的代码完成了它的工作。我只想要一个适用于所有按钮的宏。感谢你的帮助,我完成了这一点。我结束了的代码重写到: –

+0

'子btn1_Click2()'' 静态值作为Integer' '” Mainlineup Macro' '昏暗b以对象,CS作为Integer' '集合B = ActiveSheet.Buttons(应用。呼叫者)'' 随着b.TopLeftCell'' CS = .Row'' 结束With' '值=工作表(1).Cells(CS,5)。价值+ 1' '工作表(1).Cells (cs,5).value = value' 'End Sub' –