单元格值满足条件时出现的每一行上的命令按钮

时间:2017-03-13 12:26:11

标签: excel vba excel-vba

我有点像菜鸟但是从这里的许多试验和磨难中学习,这个网站是非常宝贵的。

我终于鼓起勇气问我的第一个问题,因为我已经搜索了这个网站并且谷歌找不到合适的解决方案或者我能理解的解决方案大声笑!

我在F表的那张表中有一张名为bookings的表单我需要在每一行上显示一个按钮,或者根据该行的单元格E中的值替换为文本。单元格E中的值,如果它与名为pricing的工作表中C11:C28范围内的单元格中的值匹配,则应触发按钮显示,或者该值将匹配范围C3:C10中的单元格值,如果这是我希望用文本let currencyFormatter = NumberFormatter() let decimalFormatter = NumberFormatter() var currentString = "" func formatCurrency(_ string: String) { let numberFromField = (NSString(string: string).doubleValue)/100 activeField?.text = currencyFormatter.string(from: NSNumber(value: numberFromField)) } func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { if finalTextCount >= maxCharactersLimit && string != ""{ return false } switch string { case "0","1","2","3","4","5","6","7","8","9": currentString += string if textField == kmMinTextField || textField == kmMaxTextField { formatKms(currentString) } else { formatCurrency(currentString) } default: if string.characters.count == 0 && currentString.characters.count != 0 { currentString = String(currentString.characters.dropLast()) if textField == kmMinTextField || textField == kmMaxTextField { formatKms(currentString) } else { formatCurrency(currentString) } } } return false } 替换按钮的情况。

如果按钮被触发出现,它应该复制该行中的一系列单元格,b3到d3并将其粘贴到另一个名为承包商预订的工作表上可用的下一个新行。

单击按钮并执行该过程后,我希望按钮然后更改为文本读取“承包商”,表示完成。

我找到了这个:

TPIC

非常适合按钮复制和过去我想要的地方,我无法找到任何指导等,以便将它带到我需要的地方,现在我在这里。

最终完成这个项目对你的帮助真的很棒,非常感谢这个社区。

2 个答案:

答案 0 :(得分:0)

我很感激你没有意识到这一点,但你在这里问了很多问题,所以每个帖子网站基本上都是一个问题:)所以,我建议你做一件事,然后再提问。要解决在每一行上放置按钮的第一点:

由于行和形状(按钮)之间没有真正的关系,因此取决于行的高度当然可能但非常棘手。它可以完成,但涉及行高(row.Height)和按钮位置(button.Top)之间的数学关系,这将需要很长时间才能解释。相反,我建议使用超链接而不是按钮,因为它们可以放在特定的单元格/行中。您可以阅读如何执行此操作here.以下是链接失效时的示例代码:

With Worksheets(1) 
 .Hyperlinks.Add Anchor:=.Range("a5"), _ 
 Address:="http://example.microsoft.com", _ 
 ScreenTip:="Microsoft Web Site", _ 
 TextToDisplay:="Microsoft" 
End With

在你掌握了它之后回来问你的其他问题;)

答案 1 :(得分:-1)

我用一个非常简单的解决方案解决了这个问题,根本不需要VBA代码,这对我来说实际上是首选。所以实际上没有按钮!相反,我在数据表中创建了一个新行,带有一个过滤器术语,即OPEN / CLOSED我需要在我的工作表中隐藏一行,以帮助拉出由术语放入"单元格A1"过滤的数据,在这种情况下OPEN。

下面是一个示例,我使用A1和sheet1术语来帮助您完成我已经完成的工作,Sheet1是原始数据的位置,sheet2是您要过滤和拉动的位置,该示例假设您要过滤在Sheet1行A1,A2等中的术语,随意测试,使用和适应!

在单元格A1中的sheet2中,复制在sheet1行A中找到的过滤器术语,在此paste = IF下面(Sheet1!A1 = $ A $ 1,ROW(),"")然后我put = IF(ROWS($ 1:1)> COUNT($ A:$ A),"",INDEX(Sheet1!A:A,SMALL($ A:$ A,ROWS( $ 1:1))))

就是这样,简单!工作就像一个魅力,是自动更新和恒定无需点击按钮和其他人保存时VBS的所有风险!希望这个对你有帮助。 :)