0

Inventor Ilogic (VB ベース) を使用して、図面名に基づいて Excel セルを選択したいと考えています。したがって、図面名が 0001 で終わる場合、セル B1 を使用する必要があります。図面名が 0002 で終わる場合、セル B2 を取る必要があります。

これは私が今持っているコードですが、これを約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 から最後の 4 文字を取得し、次に数字の先頭にある 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 で引き出します)。リスト/ディクショナリの値自体はシリアル化または保存できるため、コードにすべての値を入力するコードは必要ありません。

于 2013-11-12T13:30:18.427 に答える