Excel VSTO - 隐藏多列 lambda 函数问题 - VB.NET

问题描述

我一直试图找出我下面的代码有什么问题,但到目前为止没有成功。 我的简单任务是使用 VSTO / VB.NET 隐藏多个 Excel 列。

这有效:

Dim app As Excel.Application = Globals.ThisAddIn.Application
Dim act_sheet As Excel.Worksheet = app.ActiveSheet
act_sheet.Range("A:A").EntireColumn.Hidden = True
act_sheet.Range("B:B").EntireColumn.Hidden = True

这不起作用:

Dim app As Excel.Application = Globals.ThisAddIn.Application
Dim act_sheet As Excel.Worksheet = app.ActiveSheet
Dim base_hide As New List(Of String)({"A:A","B:B"})
base_hide.ForEach(Function(x) act_sheet.Range(x).EntireColumn.Hidden = True)

编译没有错误,字符串地址被正确获取。有什么想法吗?

谢谢,

解决方法

找到导致问题的原因。使用 Function() 作为 lambda 运行 ForEach 循环会期望返回一些东西。我在函数中的代码永远不会运行。将其更改为 Sub() 可按预期工作。

base_hide.ForEach(Sub(x) act_sheet.Range(x).EntireColumn.Hidden = True)