【问题标题】:C# VSTO excel functionC# VSTO excel函数
【发布时间】:2018-07-08 17:23:40
【问题描述】:

我是 VSTO 的新手,我想构建一个基于 C# 的插件,它可以与此 VBE 代码执行相同的操作。我想要 Excel 函数的相同功能。 任何建议:

Function Addone(cprin As String)
    Dim INS As String

    If Len(cprin) = 9 Then
       INS = "0" & cprin
       Addone = INS
    End If
    Addone = INS

    If Len(cprin) = 10 Then
       INS = cprin
       Addone = INS
    End If
    Addone = INS

End Function

【问题讨论】:

  • 欢迎您!您可以通过将代码放在新行上并在前面添加 4 个空格来格式化代码。这让其他人更容易阅读您的问题。
  • 如果您要从 VBA 迁移到 VSTO,我建议使用 VB.NET。

标签: c# vba function vsto excel-interop


【解决方案1】:

对于给定的函数,答案是

string Addone(string cprin) {
  string INS = null;
  if (cprin.Length == 9) {
    INS = "0" + cprin;
    return INS;
  }
  if (cprin.Length == 10) {
    INS = cprin;
    return INS;
  }
  return INS;
}

其实可以简化为

string Addone(string cprin) {
  if (cprin.Length == 9) {
    return "0" + cprin;
  }
  if (cprin.Length == 10) {
    return cprin;
  }
  return null;
}

如果你有很多代码需要翻译,你可以使用一些自动翻译器,比如this one(这只是一个例子,有很多,在线和离线)。它为开始提供了良好的基础。对于这个例子,翻译是这样的:

private void Addone(string cprin) {
  string INS;
  if (Len(cprin) == 9) {
    INS = "0" + cprin;
    Addone = INS;
  }

  Addone = INS;
  if (Len(cprin) == 10) {
    INS = cprin;
    Addone = INS;
  }

  Addone = INS;
}

这接近事实,它只是没有考虑 return 语句在 VBA 中可能不同的事实 - 所以你应该使用 Addone = INS 而不是 return INS,并将此语句修复在函数中间。此外,在 C# 和 .net 中,我们使用 Length 属性检查字符串的长度,而不是 Len()。

您可以找到更多鼓舞人心的材料here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多