2013-07-08 2 views
0

양식에 두 개의 텍스트 상자가 있습니다. 하나는 단어를 보유하고 다른 하나는 사용자가 입력 한 것을 기반으로 계산 된 숫자 값을 보유합니다. 각 문장을 구분하고 Excel에서 각 문장의 합계를 표시하는 하위 항목이 있습니다. 아래에 나열된 vb.net 코드에서 생성되는 출력입니다. 모든 단어는 A 열에 있고 B 열의 모든 값은 B 열에 있습니다. 각 문장과 그 값을 두 개의 열에 삽입하도록 코드를 어떻게 수정합니까? "문장 1의 합계"문자열에 도달하면. C & D 열에 단어와 해당 값을 삽입하기 시작해야합니다. 문장 하나와 그 값은 A & B 열에 표시되어야하며 문장 2는 그 값이 C & D 열에 표시되어야합니다. 첨부 된 이미지를 참조하십시오. 빨간색으로 표시된 텍스트는 현재 가지고있는 텍스트이고 원하는 텍스트는 원하는 결과입니다. 감사! enter image description here텍스트 상자 결과를 vb.net의 Excel 시트 셀에 표시

vb.net에서 내 코드입니다 : 필요에 따라

Private Sub Export_Click(sender As System.Object, e As System.EventArgs) Handles btnCreate.Click 

    xlWorkBook = xlApp.Workbooks.Add 

    xlApp.Visible = True 

    xlWorkSheet = xlWorkBook.Sheets("Sheet1") 
    Dim columnANum As Integer 
    Dim columnBNum 
    columnBNum = 2 
    columnANum = 2 
    With xlWorkSheet 
     .Range("A1").Value = "Word" 
     For Each cellA As String In txtWord.Text.Split(vbLf) 

      .Range("A" & columnANum.ToString).Value = cellA 
      columnANum += 1 
     Next 
     .Range("B1").Value = "Value" 
     For Each cellB As String In txtValue.Text.Split(vbLf) 
      .Range("B" & columnBNum.ToString).Value = Convert.ToInt32(cellB) 
      columnBNum += 1 
     Next 


    End With 
End Sub 

답변

1

편집 :이 코드를 크게 변경하고 테스트했습니다. 그게 당신이 찾고있는 일을해야합니까

Sub testExcelColumns() 
    Dim xlApp As Object = CreateObject("Excel.Application") 
    Dim xlWorkBook As Object 
    Dim xlWorkSheet As Object 

    xlWorkBook = xlApp.Workbooks.Add 
    xlApp.Visible = True 

    xlWorkSheet = xlWorkBook.Sheets("Sheet1") 
    Dim RowNum As Integer = 1 
    Dim ColNum As Integer = 1 

    'use .cells(row, column) instead of .range 
    xlWorkSheet.cells(RowNum, ColNum).Value = "Word" 

    For Each cellA As String In txtWord.Text.Split(vbLf) 

     'increment the row 
     RowNum += 1 

     'set the value 
     xlWorkSheet.cells(RowNum, ColNum).value = cellA 

     If cellA.StartsWith("Total") Then 
      ColNum += 2 
      RowNum = 1 
      xlWorkSheet.cells(RowNum, ColNum).Value = "Word" 
     End If 

    Next 

    'increment to the second column and first row 
    ColNum = 2 
    RowNum = 1 

    'set title 
    xlWorkSheet.cells(RowNum, ColNum).Value = "Value" 

    For Each cellB As String In txtValue.Text.Split(vbLf) 

     'increment the row 
     RowNum += 1 

     'set the value 
     xlWorkSheet.cells(RowNum, ColNum).value = cellB 

     'get value of cell to the left 
     Dim t As String = xlWorkSheet.cells(RowNum, ColNum).offset(0, -1).value 
     If Not t Is Nothing AndAlso t.StartsWith("Total") Then 
      ColNum += 2 
      RowNum = 1 
      xlWorkSheet.cells(RowNum, ColNum).Value = "Value" 
     End If 

    Next 

End Sub 
+0

코드를 실행하면 if.t.StartWith ("Total"Then)로 시작하는 줄에 "개체 참조가 개체 vb.net 인스턴스로 설정되지 않았습니다."오류가 발생합니다. 값은 B 열에 만 삽입되며 B, E 등의 다음 열로 이동하여 반복되지 않습니다. 또한 제목 단어는 C와 같이 다음 열로 넘겨지지 않습니다. 제목 값이 전혀 채워지지 않습니다 감사합니다! – user2536008

+0

죄송합니다, "개체 참조가 인스턴스로 설정되지 않았습니다. 개체 vb.net의 "때로는 t 아무것도 될 것입니다 때문입니다. 다음과 같은 경우에 대한 테스트 : Not t Is Nothing AndAlso t.StartsWith ("Total") Then –

0

것은

Dim RowNum as Integer = 1 
Dim ColNum as Integer = 1 

사용 .cells 대신 .range

xlWorkSheet.Cells(RowNum, ColNum).value = "Word" 
xlWorkSheet.Cells(RowNum, ColNum).value = "Value" 

업데이트를 행과 열을 사용해보십시오

RowNum += 1 
ColNum += 1 
+0

나는 위의 코드를 시도했지만 열을 반복하지 않았다. – user2536008

+0

xlWorkSheet.Cells (1,1) .value = "단어" xlWorkSheet.Cells (1, 2) = .value txtWord.Text.Split 문자열에서 각 셀라 들어 "값" (vbLf) xlWorkSheet.Cells (RowNum, 1) .value = cellA A 열의 셀 값이 "Total"인 경우 다음 열로 iMove를 변경하려면 어떻게해야합니까? ROWNUM + = 1 ColNum + = 2 다음 ROWNUM txtValue.Text.Split 문자열에서 각 cellB (vbLf) 용 = 2 xlWorkSheet.Cells (ROWNUM 2) .value = cellB ROWNUM + = 1 ColNum + = 2 다음 – user2536008

관련 문제