excel VBA创buildcheckboxfunction

我正在创build一个创buildcheckbox的函数。 到目前为止,我已经写了下面的代码。 下面的代码不起作用,而是显示一个错误。 有任何想法吗??

Sub test() ActiveCell.Offset(, 1) = Sample(Shp) End Sub Function Sample(Shp as shape) '~~> Create a Checkbox Set Shp = Sheets("Sheet1").CheckBoxes.Add(52.5, 3, 42, 17.25) End Function 

你的代码根本不会编译。

子例程Test在调用函数Sample时引发不匹配错误,因为当函数期望接收Shape作为必需的参数/参数时,您传递的是Nothing

我认为其他的事情很可能是错误的:

虽然你当然可以调用一个过程来添加一个checkbox,就像你正在做的那样:

 ActiveCell.Offset(, 1) = Sample(Shp) 

这实际上不是将checkbox分配给ActiveCell或任何东西。 checkbox的位置在创build它的函数中被硬编码。

可能创buildcheckbox的函数应该是一个子例程(但最终取决于您的需要和偏好)。 除非你需要返回一个值(在这种情况下你不这样做),你应该只使用一个子程序。

所以解决办法是做一些事情:

 Sub test() CreateTextBox Sheet1 '#Modify as needed End Sub Sub CreateTextBox(Optional sh As Worksheet) If sh Is Nothing Then Set sh = ActiveSheet sh.CheckBoxes.Add 52.5, 3, 42, 17.25 End Sub 

如果你想把这个checkbox放在ActiveCell.Offset(,1) ,那么就这样做:

 Sub test() CreateTextBox ActiveCell.Offset(,1) '#Modify as needed End Sub Sub CreateTextBox(cl as Range) ActiveSheet.CheckBoxes.Add cl.Left, cl.Top, 42, 17.25 End Sub