2014-11-06 6 views
0

나는이 일을하기에는 너무 많은 멍청이라면 용서해주십시오. 나 자신과 내 친구를 위해 데이터베이스를 만드는 일을하고있다. (이것들은 전혀 병합되지 않은 두 개의 서로 다른 데이터베이스가 될 것입니다.) 저는 처음부터 시작하지 않고 제 문제 중 하나 일 수 있습니다. 저는 VBA로하고 싶은 일을 "배우고 테스트"하기 위해 근무 시간표를 사용하고 있습니다. 걱정하지 마십시오. 기본적으로 셀 "A3 : D3"& "E2"의 정보 (값?)를 가져 와서 해당 값을 해당 열에 넣는 것입니다. 그러나 나는 다음 셀 안의 코드가 지나치게 바뀌길 원하지 않습니다. 그것이 내가 10 번과 11 번 줄에 넣은 이유입니다. 여전히 그것을 좋아하지 않습니다.VBA 셀에 데이터가 있거나 다음 빈칸으로가는 경우 셀을 건너 뛰시겠습니까?

또한이 문제에 대한 도움을받을 수 있는지 궁금합니다. 정보가 날짜에 민감 할 수 있다면? 즉, 오늘 시간을 입력하고 어제 시간을 잊어 버린 것을 기억하여 "DateToday"또는 A3 상자에 날짜가 무엇인지 입력하고 그 날짜에 전용 행에 정보를 기록하거나 2 일간의 작업을 생략하고 당신은 날짜를 넣어 VBA 두 행을 건너 뜁니다?

두 가지 다른 요청입니까? 그리고 둘 중 하나가 가능합니까? 어떤 도움이라도 대단히 감사합니다 !! 미리 감사드립니다.

Private Sub CommandButton1_Click() 
Dim DateToday As Date, TimeIn As Integer, LunchLength As Integer, TimeOut As Integer, HoursToday As Integer 
    Worksheets("sheet1").Select 
    DateToday = Range("A3") 
    TimeIn = Range("B3") 
    LunchLength = Range("C3") 
    TimeOut = Range("D3") 
    HoursToday = Range("E2") 
    Worksheets("sheet1").Range("A141").Select 
    If Worksheets("sheet1").Range("A141").Offset(1, 0) <> "" Then 
    Worksheets("sheet1").Range("A141").End(x1Down).Select 
    End If 
    ActiveCell.Value = TimeIn 
    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = LunchLength 
    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = TimeOut 
    ActiveCell.Offset(0, 1).Select 
    ActiveCell.Value = HoursToday 
    Worksheets("sheet1").Range("B2:D2").ClearContents 
    ThisWorkbook.Save 
    Worksheets("sheet1").Range("B2").Select 


End Sub 

마지막 부분 인 "Worksheets("sheet1").Range("B2").Select"은 내 두 번째 프로젝트에 더 적합하지만이 경우에도 좋습니다. 두 번째 프로젝트는 나를 제외하고이 프로젝트와 매우 유사 할 것이며 내 친구는 부품 번호, 정의, 부품 조건 및 기타 물건을 입력하게 될 것입니다. 다시 한번, 어떤 도움이 많이 감사합니다!

답변

0

테스트되지 않은 :

Private Sub CommandButton1_Click() 
Dim DateToday As Date, TimeIn As Integer, LunchLength As Integer 
Dim TimeOut As Integer, HoursToday As Integer, sht as WorkSheet 

    Set sht = ThisWorkbook.Worksheets("sheet1") 

    DateToday = sht.Range("A3") 
    TimeIn = sht.Range("B3") 
    LunchLength = sht.Range("C3") 
    TimeOut = sht.Range("D3") 
    HoursToday = sht.Range("E2") 

    With sht.Cells(Rows.Count,1).End(xlUp).Offset(1,0).EntireRow 
     .Cells(1).Value = TimeIn 
     .Cells(2).Value = LunchLength 
     .Cells(3).Value = TimeOut 
     .Cells(4).Value = HoursToday 
    End With 

    sht.Range("B2:D2").ClearContents 
    ThisWorkbook.Save 
    sht.Range("B2").Select 
End Sub 

참고 : VBA에서 작업 할 때 일반적으로 no need to Select anything있다.

+0

마지막 조언을 주셔서 감사합니다 ... 코드가 작동하지 않는 것 같습니다 ... 절반 정도 작동하지만 셀을 지 웁니다. 정보에 넣을 때 "LunchLength"셀 하나만 보여줍니다 , 그러나 그것은 실제 시간을 알려주지 않습니다, 그리고 옆에있는 다른 셀들에는 정보가 있지만 정확한 정보가 아니라 정보가 있습니다. 또한, 옆에있는 셀은 실제로 포함 된 정보를 표시하지 않습니다.이 정보를 클릭하고 수식 표시 줄을 보면 실제로 셀에 정보가 없습니다. – LearningExcelAndLovingIt

+0

.. VB는 정보를 가져 오는 셀이 수식이있는 셀이라는 것을 알 수 있습니다. 수식은 기본적으로 위의 셀을 보는식이라면 (즉, B3은 B2를 보게됩니다.) 그리고 만약 내가 1 또는 1h라고 말하면 e3은 B3을 취하여 다음과 같은 변환을위한 또 다른 셀 세트를 찾습니다. 그 1 시간 또는 2 걸리고 1시 2 분으로 바뀝니다 ... 그래서 나는 VB가 B3의 정보의 "그림"을 가져 와서 다음 셀에 " ". VB에서 가능합니까? – LearningExcelAndLovingIt

+0

'Debug.Print TimeIn, LunchLength, TimeOut, HoursToday'를 사용해보고 직접 실행 창에서 무엇을 얻을 수 있는지보십시오. 파일 없이는 다른 것을 제안하기가 어렵습니다. –