VBA 目标交叉单元格取决于行和列标题以及用户表单值

问题描述 投票:0回答:1

我叫 Arno,居住在法国,我是 stackoverflow 的普通用户,我通常会在那里找到很多答案。 但这一次我陷入了困境......我熟悉制作打印、导出 PDF 并记录在数据库中的用户表单,这次我希望我的培训师将培训信息记录在数据库中。 您肯定会说,在 Excel 工作表中直接输入日期值很简单。但用户表单实际上还有其他字段需要填写,并将导出为 PDF 格式的培训证书(以避免越来越多的纸张)。这就是我使用用户表单的原因。

Overall scheme

我有一个命令按钮“记录训练”,它会触发下面的紫色用户表单。我希望这个USF的一些数据被记录在你在左边看到的数据库中。它们是带有已定义列表的组合框(日期除外)。

首先,我需要定位“Peter”和代码“B”交叉处的单元格。据我了解,我需要找到我的 USF 的“NAME”字段的值与列出所有名称的行之间的匹配项。代码相同(“CODE”字段值与列之间的匹配

然后我需要确定该行和列的交集,这就是我想要写入usf的“DATE”字段值的地方。

最后,根据“MARK”字段的值(可以是“好”、“待审核”或“不好”),包含日期的单元格的颜色将有 3 种可能的不同颜色。最终结果将是第二个带有日期和颜色的表格,一切都很好。

我不知道如何找到表格的交叉单元格并将日期放入其中,并且我不知道如何修复最终目标单元格的颜色。

我也没有代码可以建议,但工作表可以是“sheet1”,组合框可以在你的建议中命名为 cbDate、cbName、cbCode 等。

非常感谢您的帮助。

excel vba cell intersection
1个回答
0
投票

经过不同的测试我回来了。 我的桌子: My table to fill

我的用户表单: My userform

现在我的代码基于蒂姆建议我的“类似”,我发现它非常接近我试图实现的目标。

私有子cbRecord_Click()

暗淡员工作为变体 员工 = cbName.Value

将工作表变暗 设置 sht = Worksheets("TrainingSheet")

Dim CodeColumn '变体作为默认值 设置 CodeColumn = Application.Match(cbCode.Value, sht.Range("B:B"), 0)

Dim NameLine '变体作为默认值 设置 NameLine = Application.Match(employee, sht.Range("C2:H2"), 0)

将日期调暗为字符串 日期 = tbDate.Value

If IsError(NameLine) then MsgBox "抱歉,在工作表中未找到员工": Exit Sub 如果 IsError(CodeColumn) 那么 MsgBox“在工作表中找不到训练代码”:Exit Sub

WorksheetFunction.Index(NameLine, CodeColumn).Value = thedate

结束子

我现在在“设置 CodeColumn 和 NameLine”错误 13 类型不兼容上出现错误,我不知道它来自哪里。

我查看了英语和法语网站,尝试了“application.workfunction.Match”(没有成功),将表值设置为文本、数字等(没有成功),更改了变体类型等。总是出现相同的错误.

您可以帮忙吗? 非常感谢。 阿诺

© www.soinside.com 2019 - 2024. All rights reserved.