2011-08-03 8 views
0

私は、プログラムに入力された情報を受け取り、マイクロソフトの言葉を使用して引用シートを生成するアプリケーションを作成しようとしています。今私は単語の文書のテーブルを作成するのに問題があります。ユーザーは1〜4種類の製品を引用することができます。 1つの製品が引用されると、6x3の表が作成されます。 2つの製品が引用されている場合、3つの列が2つの製品を分ける6x5の表が作成されます。 3つまたは4つの製品が引用されている場合、最初のテーブルの下に別のテーブルが作成され、最初のテーブルと同じルールが適用されます。私が3つまたは4つの製品を引用するとプログラムは完璧に動作しますが、1つまたは2つの製品を引用しようとするとエラーになります。vb.net Word文書へのテーブルの追加

私はまだ非常にプログラミングに新しいですので、私のコードは非常に醜いかもしれません。私のエラーはおそらく私がIf文をどのように使うのかと知っていますが、ここに私のものがあります。おかげでちょうど私の頭の上から

Dim QuoteNumber As String 
    Dim RowsNeeded As Integer 

    QuoteNumber = NumberOfProducts.Text 

    'Choosing the number of Columns Needed from number of carpets quoted 
    Select Case QuoteNumber 
     Case "1" 
      RowsNeeded = 2 
     Case "2" 
      RowsNeeded = 5 
     Case "3" 
      RowsNeeded = 5 
     Case "4" 
      RowsNeeded = 5 
    End Select 

    Dim PricePer As String = "Product", PerLabor As String = "Labor" 
    Dim PShipping As String = "Shipping" 
    Dim PUpgrade As String = "Upgrade", PRegular As String = "Regular" 

    ProductTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 6, RowsNeeded) 
    ProductTable.Range.Font.Bold = False 
    ProductTable.Range.Font.Underline = False 

    ProductTable.Cell(1, 1).Range.Font.Underline = True 'Underline the Product 

    'Only 1 Product being Quoted 
    ProductTable.Cell(1, 1).Range.Text = cboxProductColor.SelectedItem.ToString 
    ProductTable.Cell(2, 1).Range.Text = PricePer 
    ProductTable.Cell(3, 1).Range.Text = PerLabor 
    ProductTable.Cell(4, 1).Range.Text = PShipping 
    ProductTable.Cell(5, 1).Range.Text = PUpgrade 
    ProductTable.Cell(6, 1).Range.Text = PRegular 

    ProductTable.Cell(2, 2).Range.Text = txtProductPrice.Text 
    ProductTable.Cell(3, 2).Range.Text = txtProductLabor.Text 
    ProductTable.Cell(4, 2).Range.Text = txtShippingPrice.Text 
    ProductTable.Cell(5, 2).Range.Text = txtUpgrade.Text 
    ProductTable.Cell(6, 2).Range.Text = txtRegular.Text 
    ProductTable.Columns.Item(1).Width = oWord.InchesToPoints(1.8) 'Change width of columns 1 & 2 
    ProductTable.Columns.Item(2).Width = oWord.InchesToPoints(0.8) 

    '2 Products being Quoted 
    If RowsNeeded = 5 Then 

     'Spacing Column 3 
     ProductTable.Columns.Item(3).Width = oWord.InchesToPoints(1) 

     ProductTable.Cell(1, 4).Range.Font.Underline = True 'Underline the Product 

     ProductTable.Cell(1, 4).Range.Text = cboxProductColor2.SelectedItem.ToString 
     ProductTable.Cell(2, 4).Range.Text = PricePer 
     ProductTable.Cell(3, 4).Range.Text = PerLabor 
     ProductTable.Cell(4, 4).Range.Text = PShipping 
     ProductTable.Cell(5, 4).Range.Text = PUpgrade 
     ProductTable.Cell(6, 4).Range.Text = PRegular 

     ProductTable.Cell(2, 5).Range.Text = txtProductPrice2.Text 
     ProductTable.Cell(3, 5).Range.Text = txtProductLabor2.Text 
     ProductTable.Cell(4, 5).Range.Text = txtShippingPrice2.Text 
     ProductTable.Cell(5, 5).Range.Text = txtUpgrade2.Text 
     ProductTable.Cell(6, 5).Range.Text = txtRegular2.Text 
     ProductTable.Columns.Item(4).Width = oWord.InchesToPoints(1.8) 'Change width of columns 1 & 2 
     ProductTable.Columns.Item(5).Width = oWord.InchesToPoints(0.8) 
     ProductTable.Range.ParagraphFormat.SpaceAfter = 1 

    End If 

    'Using a line break before my next table 
    oLineBreak = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range) 
    oLineBreak.Range.InsertParagraphBefore() 
    oLineBreak.Range.Text = "" 
    oLineBreak.Format.SpaceAfter = 0.5 
    oLineBreak.Range.InsertParagraphAfter() 

    '3 Products being quoted 
    'I'm creating a new table for Products 3 and 4 
    If NumberOfProducts.SelectedIndex = 2 Or 3 Then 
     Dim ProductTable2 As Word.Table 

     'Display the Product Style/Color 
     Dim QuoteNumber2 As String 
     Dim RowsNeeded2 As Integer 

     QuoteNumber2 = NumberOfProducts.Text 

     'Choosing the number of Columns Needed from number of Products quoted 
     Select Case QuoteNumber2 
      Case "1" 
       RowsNeeded2 = 1 
      Case "2" 
       RowsNeeded2 = 1 
      Case "3" 
       RowsNeeded2 = 2 
      Case "4" 
       RowsNeeded2 = 5 
     End Select 

     Dim PricePer2 As String = "Product", PerLabor2 As String = "Labor" 
     Dim PShipping2 As String = "Shipping" 
     Dim PUpgrade2 As String = "Upgrade", PRegular2 As String = "Regular" 

     ProductTable2 = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 6, RowsNeeded2) 
     ProductTable2.Range.Font.Bold = False 
     ProductTable2.Range.Font.Underline = False 

     ProductTable2.Cell(1, 1).Range.Font.Underline = True 'Underline the Product Color 

     'This is for the 3rd Product 
     ProductTable2.Cell(1, 1).Range.Text = cboxProductColor3.SelectedItem.ToString 
     ProductTable2.Cell(2, 1).Range.Text = PricePer2 
     ProductTable2.Cell(3, 1).Range.Text = PerLabor2 
     ProductTable2.Cell(4, 1).Range.Text = PShipping2 
     ProductTable2.Cell(5, 1).Range.Text = PUpgrade2 
     ProductTable2.Cell(6, 1).Range.Text = PRegular2 

     ProductTable2.Cell(2, 2).Range.Text = txtProductPrice3.Text 
     ProductTable2.Cell(3, 2).Range.Text = txtProductLabor3.Text 
     ProductTable2.Cell(4, 2).Range.Text = txtShippingPrice3.Text 
     ProductTable2.Cell(5, 2).Range.Text = txtUpgradeTotal3.Text 
     ProductTable2.Cell(6, 2).Range.Text = txtRegular3.Text 
     ProductTable2.Columns.Item(1).Width = oWord.InchesToPoints(1.8) 'Change width of columns 
     ProductTable2.Columns.Item(2).Width = oWord.InchesToPoints(0.8) 

     '4 Products being Quoted 
     If RowsNeeded2 = 5 Then 

      'Spacing Column 3 
      ProductTable2.Columns.Item(3).Width = oWord.InchesToPoints(1) 

      ProductTable2.Cell(1, 4).Range.Font.Underline = True 'Underline the Product Color 

      ProductTable2.Cell(1, 4).Range.Text = cboxProductColor4.SelectedItem.ToString 
      ProductTable2.Cell(2, 4).Range.Text = PricePer2 
      ProductTable2.Cell(3, 4).Range.Text = PerLabor2 
      ProductTable2.Cell(4, 4).Range.Text = PShipping2 
      ProductTable2.Cell(5, 4).Range.Text = PUpgrade2 
      ProductTable2.Cell(6, 4).Range.Text = PRegular2 

      ProductTable2.Cell(2, 5).Range.Text = txtProductPrice4.Text 
      ProductTable2.Cell(3, 5).Range.Text = txtProductLabor4.Text 
      ProductTable2.Cell(4, 5).Range.Text = txtShippingPrice4.Text 
      ProductTable2.Cell(5, 5).Range.Text = txtUpgrade4.Text 
      ProductTable2.Cell(6, 5).Range.Text = txtRegular4.Text 
      ProductTable2.Columns.Item(4).Width = oWord.InchesToPoints(1.8) 'Change width of columns 1 & 2 
      ProductTable2.Columns.Item(5).Width = oWord.InchesToPoints(0.8) 
      ProductTable2.Range.ParagraphFormat.SpaceAfter = 1 

答えて

0

は、私はあなたが&列が反転した行を持っていると思います。行&の列パラメータを取るすべてのメソッドでは、行パラメータが最初に来ます(たとえば、Tables.Add、Cell()など)。

+0

ゲイリー、応答のためにありがとうが、行と列が正しい順序であった。私のIfステートメントがジャックアップされたことが判明しましたが、私は今すぐ修正しました。ありがとう –

関連する問題