使用发明者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
任何人都可以帮助我更有效地解决这个问题吗?
答案 0 :(得分:3)
如果我能正确理解你的问题,你应该能够做到这一点:
Parameter("31-W00.ipt.MP_Length") =
GoExcel.CellValue("31-W00.xls", "Blad1", "B"&Integer.Parse(Right(name, 4)))
首先从名称中取出最后四个字符,然后从数字的开头删除0,然后最后将它与B连接。
答案 1 :(得分: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
答案 2 :(得分: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值本身,这样就不会在代码中填充所有代码。