【问题标题】:Selecting contiguous ranges using "cells" for Excel through VB.net通过 VB.net 使用 Excel 的“单元格”选择连续范围
【发布时间】:2013-08-19 06:18:52
【问题描述】:

我似乎找不到在 VB.net 中使用我的 VBA 技巧之一的方法

例如选择这个范围在 VBA 中有效:

Dim Border As Range   
Border = Range(Cells(2, 3), Cells(10, 4)).Select

在 Visual Studio 中,我只能使用一个“单元格”来调用范围。上面相同的代码强调了“细胞”这个词,即使我已经声明了它也没有声明:

Dim Border As Excel.Range
Border = Range(Cells(2, 3), Cells(10, 4)).Select()

我使用 .Row 和 .Column 来标识数据集维度。我试着到处寻找解释/解决方案。也许我正朝着错误的方向努力。有人知道吗?

【问题讨论】:

  • 只是一个猜测:如果 Excel.Range 而不是 Range 有效,Excel.Cells(2, 3) 会有效吗?
  • 在 Microsoft.Office.Interop.Excel 的主树中不包含“单元格”。

标签: vb.net visual-studio-2010 visual-studio vba excel


【解决方案1】:

您需要使用范围或工作表来限定单元格。不像在 VBA 中那样隐含单元格引用。

C#:

internal static void TestRangeCells(Worksheet worksheet)
{
    Range range = worksheet.Range(worksheet.Cells[1, 1], worksheet.Cells[5, 10]);
    MessageBox.Show(range.Address);
}

【讨论】:

  • @Zabalba 是的,它一定是在我写答案时输入的。无论哪种方式,很高兴它有效:)
  • @Zabalba 哦,仅供参考,您还需要明确引用其他内容:Range、ActiveCell、ActiveSheet、ActiveWorkbook(以及其他)需要被限定。在 VBA 中这是隐含的。
【解决方案2】:

根据http://msdn.microsoft.com/de-de/library/aa288993(v=vs.71).aspx,以下应该可以工作:

Border = ws.get_Range("B3:J4",Type.Missing);

这只是使用列编码为字母的单元格名称,而不是索引(2 -> B,10 ->J)。如果需要,您可能可以在代码中动态构建字符串。

【讨论】:

  • 它仍然没有接受我输入的内容。您能否举一个使用 Cells(1,2)、Cells(1,3) 的示例?
  • 你也想实现什么?我知道您想定义一些单元格的范围。为此,您如何做到这一点并不重要。但是现在看来主要目的是使用Cells 函数,无论出于何种目的。这是你的问题吗?
  • 是的,我想使用单元格函数而不是引用单元格的 A1 样式。
  • 也许stackoverflow.com/questions/4319878/… 可以告诉您如何解决您的问题。它只是 C# 而不是 VB。
  • 太棒了!当我使每个单元格变暗然后在一个范围内使用它时,它就花了它。我不认为它会起作用,因为上述方法也不起作用。这让我意识到我需要在单元格之前说明工作表。 BorderRange = oSheet.Range(oSheet.Cells(1, 1), oSheet.Cells(LR1, LC1))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
相关资源
最近更新 更多