0

使用发明者 Ilogic(基于 VB),我想根据绘图名称选择一个 Excel 单元格。因此,当绘图名称以 0001 结尾时,它应该采用单元格 B1。当绘图名称以 0002 结尾时,它应该占用单元格 B2,依此类推。

这是我现在拥有的代码,但我需要将其扩展到 aprox 50,这应该能够以更清洁的方式进行:

Select Case name
Case "62-31-SD-0001"
    Parameter("31-W00.ipt.MP_Length") = GoExcel.CellValue("31-W00.xls", "Blad1", "B1")
Case "62-31-SD-0002"    
    Parameter("31-W00.ipt.MP_Length") = GoExcel.CellValue("31-W00.xls", "Blad1", "B2")
Case "62-31-SD-0003"
    Parameter("31-W00.ipt.MP_Length") = GoExcel.CellValue("31-W00.xls", "Blad1", "B3")
Case "62-31-SD-0004"    
    Parameter("31-W00.ipt.MP_Length") = GoExcel.CellValue("31-W00.xls", "Blad1", "B4")
End Select

任何人都可以帮助我如何以更有效的方式做到这一点?

4

3 回答 3

3

如果我正确理解了您的问题,您应该可以像这样简单地做到这一点:

Parameter("31-W00.ipt.MP_Length") = 
    GoExcel.CellValue("31-W00.xls", "Blad1", "B"&Integer.Parse(Right(name, 4)))

它首先从 name 中取出最后四个字符,然后从中删除数字开头的 0,最后将其与 B 连接。

于 2013-11-12T13:24:27.603 回答
1

这样的事情应该简化案例

Sub Main()
    Console.WriteLine("Parameter(""31-W00.ipt.MP_Length"") = GoExcel.CellValue(""31-W00.xls"", ""Blad1"", ""B{0}"")", B_Something("62-31-SD-0004"))
    Console.ReadKey()
End Sub

Public Function B_Something(ByVal something As String) As String
    Return Integer.Parse(something.Substring(something.Length - 4)).ToString

    'or
    'Return something.Substring(something.Length - 4).TrimStart(New Char() {"0"c})
End Function
于 2013-11-12T13:20:23.043 回答
1

考虑存储字符串值的 XLParms 类的字典或列表,然后

  Private myCol as New Dictionary(of String, XLParms)

   For each kvp as KeyValuePair in myCol
     Parameter(kvp.Value.Parameter) = _
          GoExcel.CellValue(kvp.Value.XLFile, _
            kvp.Value.Something, kvp.Value.XLCell)
  Next kvp

作为一个列表,只需在 for/next 循环中使用它。这取决于您有时是否只需要其中一些东西(然后使用字典从 ParamerName 中提取您想要的东西)。List/Dictionary 值本身可以被序列化或保存,这样您就没有代码在代码中填充所有这些值。

于 2013-11-12T13:30:18.427 回答