如何用单行VBA语句引用Excel表格指定行的单元格区域?
单行VBA代码实现多单元格批量赋值
嘿,这个需求很常见!你可以通过结构化引用+Index函数,或者直接利用Excel表格的ListObject对象,用单行代码完成这三个单元格的赋值,不用再写三行重复代码啦。
方法一:用Application.Index直接返回指定列区域
BBT.Range(BBT.Cells(lBBTRow, 11), BBT.Cells(lBBTRow, 13)).Value = Application.Index(Settings.Range("tblSite[Store]:tblSite[Type]"), lStoreTableRow, 0)
解释:
Settings.Range("tblSite[Store]:tblSite[Type]")精准选中表格tblSite里从Store列到Type列的所有行数据Application.Index的第三个参数设为0,表示返回匹配行(lStoreTableRow)的所有列数据,也就是我们需要的Store、Brand、Type三个值- 直接将这个1行3列的结果赋值给BBT里的目标连续区域,Excel会自动对应位置完成赋值
方法二:用ListObject对象更规范地操作表格(推荐)
如果你习惯用表格对象的结构化操作,这种写法更清晰,也不容易出错:
BBT.Cells(lBBTRow, 11).Resize(1, 3).Value = Settings.ListObjects("tblSite").ListRows(lStoreTableRow).Range.Columns("Store:Type").Value
解释:
Settings.ListObjects("tblSite")直接引用表格对象,比用Range更安全.ListRows(lStoreTableRow).Range.Columns("Store:Type")定位到匹配行的指定列范围.Resize(1, 3)快速把BBT的起始单元格扩展为1行3列的区域,和源区域尺寸匹配后直接赋值
注意事项:
- 确保
lStoreTableRow是有效的行号(也就是Match函数确实找到了匹配项,没有返回错误) - 目标区域和源区域的尺寸必须完全一致(都是1行3列),否则会触发运行时错误
内容的提问来源于stack exchange,提问作者Steven Martin
相关产品推荐
相关产品推荐

