VBA程序里面如何使用Lisp的选择集?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA程序里面如何使用Lisp的选择集?相关的知识,希望对你有一定的参考价值。
参考技术A 我想在vba中实现现选择后执行,模拟cad自身先选后执行的模式,可是vba过程得不到预先选择的选择集,而在lisp中可以得到预先的选择集,请问高手怎么在vba中得到lisp的选择集呢,或者怎么通过其他方式实现现选择后执行??VBA-如何选择具有值的列单元格
【中文标题】VBA-如何选择具有值的列单元格【英文标题】:VBA- How do you select a column's cells that have value 【发布时间】:2021-11-11 14:27:30 【问题描述】:我正在研究这种过滤 2 列以查找具有不同值的行、选择这些列中的值并将单元格区域涂成黄色的方法。我无法正确选择值。由于某种原因,我现在使用的所有选择方法都不能正常工作。范围值是单个单元格,我正在尝试选择列的整个使用范围。他们要么不选择整个使用范围,要么选择包括空白单元格在内的整个列,或者在工作表的最底部选择颜色单元格。这是我的代码示例:
static public void FilterFunction(Excel.Application Oxl, Excel.Worksheet PSheet, Excel.Range Rng, Excel.Range Find)
Excel.Range Filler = null;
Rng.AutoFilter(Rng.Column, "Found");
Find.AutoFilter(Find.Column, "Missing");
Rng.Columns.Select();
Filler = Oxl.Selection as Excel.Range;
Filler.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Find.End[Excel.XlDirection.xlDown].Select();
Filler = Oxl.Selection as Excel.Range;
Filler.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Rng.AutoFilter(Rng.Column, "Missing");
Find.AutoFilter(Find.Column, "Found");
Rng.EntireColumn.Select();
Filler = Oxl.Selection as Excel.Range;
Filler.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Find.End[Excel.XlDirection.xlDown].Select();
Filler = Oxl.Selection as Excel.Range;
Filler.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
PSheet.ShowAllData();
【问题讨论】:
【参考方案1】:自己想出了解决方案。我利用了工作表的UsedRange
属性,并选择了其中包含我的范围值的列,为我提供了一个范围,其中包含一个列中的所有单元格,其中包含值。我将标题(Rng
、Find
)以黄色突出显示,因此我使用标题的范围值将它们变回白色。
static public void FilterFunction(Excel.Application Oxl, Excel.Worksheet PSheet, Excel.Range Rng, Excel.Range Find)
Excel.Range Filler = null;
PSheet.Activate();
Rng.AutoFilter(Rng.Column, "Found");
Find.AutoFilter(Find.Column, "Missing");
Filler = PSheet.UsedRange.Columns[Rng.Column] as Excel.Range;
Filler.Columns.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Filler = PSheet.UsedRange.Columns[Find.Column] as Excel.Range;
Filler.Columns.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Rng.AutoFilter(Rng.Column, "Missing");
Find.AutoFilter(Find.Column, "Found");
Filler = PSheet.UsedRange.Columns[Rng.Column] as Excel.Range;
Filler.Columns.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Filler = PSheet.UsedRange.Columns[Find.Column] as Excel.Range;
Filler.Columns.Cells.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
Rng.Cells.Interior.Color = ColorTranslator.ToOle(Color.White);
Find.Cells.Interior.Color = ColorTranslator.ToOle(Color.White);
PSheet.ShowAllData();
【讨论】:
以上是关于VBA程序里面如何使用Lisp的选择集?的主要内容,如果未能解决你的问题,请参考以下文章
请教高手,lisp如何实现在选取的选择集中,将选择集中各个图层分别建成以个选择集?
使用 VBA 在 Access 2010 中的表单上显示记录集
Access VBA 如何根据多选列表框中的选择过滤记录集?
lisp里面选集SS1 和 选集SS2 如何合并成选集SS? 还有就是 我用复制命令复制了多个图元 (command "copy" s