VBA-如何选择具有值的列单元格
Posted
技术标签:
【中文标题】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-如何选择具有值的列单元格的主要内容,如果未能解决你的问题,请参考以下文章