2016-06-16 3 views
-1

작업 로그의 코드를 작성하려고합니다. 날짜, 회사 및 주문한 제품의 3 개의 열이 있습니다.열의 다음 빈 셀 찾기 및 쓰기

각 열에 입력 상자가있는 양식을 만들어 해당 정보를 입력하고 싶습니다. 다음 빈 셀을 찾은 다음 입력 상자를 사용하여 값을 설정하는 데 문제가 있습니다. 사진이 첨부 된 것처럼 보일 것입니다.

Public Function startRow() As Integer 
    startRow = 2 
End Function 

startRow는 내가 헤더를 무시하는 모든 데이터 테이블에있는 함수, 때로는 UI 요소와 빈 시트와 함께 작동하는 :

Example of what i want to achieve

+2

새로운 SO 멤버로서,이 섹션 [MCVE] – swiftBoy

답변

1

당신은 기본적으로 이런 일을합니다.

Private Function LastRow() As Integer 
    Dim rangeObj As Range 
    Set rangeObj = Tabelle3.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious) 
If rangeObj Is Nothing Then 
    LastRow = startRow 
ElseIf rangeObj.Row < startRow Then 
    LastRow = startRow 
Else 
    LastRow = rangeObj.Row 
End If 
End Function 

이 함수는 마지막으로 사용한 행 번호를 반환합니다.이 행을 알고 있으면 그 행 아래에 데이터를 삽입 할 수 있습니다. If-Elseif-Else는 빈 칸을위한 시트와 시트로, 콜름 칸막이 만 포함합니다.

0

코드가 작동하지만 코드를 다시 실행할 때마다 이전에 넣은 값을 덮어 씁니다. 다음 행으로 내려 가서 거기에 쓰는 것보다는 매번 행 2에 값을 넣어야합니다.

+2

을 참조하시기 바랍니다. 귀하가 참조하는 대답에 덧글을 추가해야합니다. 자신의 답이 아닙니다. 답변을 추가하면 해당 답변의 포스터에 질문이 전달되지 않습니다. – RGA

0

이 시도 :

Enum columnNumbers 
    colDate = 1 
    colCompany 
    colProduct 
End Enum 

Private Sub CommandButton1_Click() 
    Dim nextRow As Integer 
    Dim ws As Worksheet 

    Set ws = ActiveSheet 
    nextRow = ws.Cells(ws.Rows.Count, colDate).End(xlUp).Row + 1 

    ws.Cells(nextRow, colDate) = InputBox("Enter date value", "Date", Date) 
    ws.Cells(nextRow, colCompany) = InputBox("Enter company name", "Company") 
    ws.Cells(nextRow, colProduct) = InputBox("Enter product details", "Product") 
End Sub 

당신의 세 개의 열이 연속 것을 가정하면, 첫 번째로 열거 값으로 열 번호를 할당 (예를 들면, 날짜 열은 E, 설정 colDate = 5 인 경우) 및 열거 된 이후 변수는 자동으로 1 씩 증가합니다 (colCompany = colDate + 1 등).

그런 다음 inputbox를 사용하여 값을 캡처하십시오.