2017-04-13 2 views
1

나는 지불 계획을 신청 한 학생들을위한 데이터베이스를 만들었습니다. 나는 3 장이 있습니다 :다른 장의 셀 찾기

"Inquiry"- 이것은 학생들이 등록하기를 기다리는 동안 데이터가 저장되는 곳입니다.

"확인 됨"-이 데이터에는 학생 ID (B1), 계획 ID (B2) 및 Pay ID (B3)의 3 행 제목이 있습니다. 여기에서 학생이 가입 한 후 추가 데이터를 입력합니다.

"마스터리스트"- 지불 계획을 확인한 학생의 최종 목록입니다.

아이디어는 "Confirmed"시트에 수동으로 데이터를 입력 한 다음 "Inquiry"시트에서 Student ID (B1)의 값을 검색하는 매크로를 실행하는 것입니다. 그런 다음 계획 ID (B2)와 지불 ID (B3)를 B 열에, E를 "문의"시트에 복사하길 원합니다.

일단 데이터가 채워지면 전체 행이 "마스터 목록"시트로 전송되어야합니다.

녹음을 시도했지만 녹음했을 때 셀의 현재 값만을 찾아 냈습니다. 나는 공식에 상당히 좋지만 전에 매크로를 작성하지 않았습니다.

Range("B1").Select 
Selection.Copy 
Sheets("Enquiry").Select 
Cells.Find(What:="4536092", After:=ActiveCell, LookIn:=xlFormulas, _ 
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False).Activate 
Rows("29:29").Select 
Application.CutCopyMode = False 
Selection.Copy 
Sheets("Masterlist").Select 
ActiveWindow.LargeScroll Down:=-7 
Rows("2:2").Select 
Sheets("Enquiry").Select 
Range("A29").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = "4536092" 
Rows("29:29").Select 
Selection.Copy 
Sheets("Masterlist").Select 
Rows("2:2").Select 
Selection.Insert Shift:=xlDown 

답변

0

매크로 레코더를 통해 모든 vba 수준에 액세스 할 수있는 것은 아닙니다. 아래의 코드는 시트 레이아웃 설명을 기반으로 작성한 테스트 통합 문서에서 작동합니다. 장래에 통합 문서의 스크린 샷이나 더 나은 드롭 박스 xlsx를 추가하십시오. 또한 여기에있는 사람들 중 극소수가 처음부터 코드를 작성하는 데 시간이 걸릴 것입니다.

나는 이것을 아주 많이 언급했다. 이것을 가지고 놀아 라. 질문이 있으면 답장을 드리겠습니다.

Sub macroName() 

     'declaring range object Ranges hold values and cell addresses at the same time 
    Dim id As Range 
    Dim found As Range 

     'setting id var 
    Set id = Worksheets("Confirmed").Range("b2") 

     'making sure id we are checking isn't null 
    If Not id.Value = "" Then 
      'finding the value for var id. xlWhole means exact cell match. 
     Set found = Worksheets("Enquiry").Cells.find(What:=id, LookAt:=xlWhole) 
     MsgBox "Inserted new row in Masterlist for ID: " & id 
    Else 
     MsgBox "ID cannot be null at: " & id.Address 
    End If 

     'making sure we had a match from .find 
    If Not found Is Nothing Then 
      'inserting a new row 
     Worksheets("Masterlist").Range("a2").EntireRow.Insert 
      'setting new row to value of entire row value of range object. 
     Worksheets("Masterlist").Range("a2").Value = found.Rows.Value 
    Else 
     MsgBox "Nothing found for id: " & id.Value 
    End If 
End Sub