2016-09-29 3 views
1

저는 VBA를 처음 접했고 특정 프로세스에 대한 코드를 만들 수 있는지 확인하려고합니다. 첫 번째 행 (회사 A, 회사 B 등)에 고유 한 식별자와 회사 이름이있는 스프레드 시트가 있습니다. 다음 열에는 각 회사에 해당하는 위치, 키 연락처 등과 같은 몇 가지 다른 열이 있습니다. 마지막으로, "comments"에 대한 열이 있습니다. 이러한 의견은 공정하게 정기적으로 업데이트됩니다.고유 한 값을 변경하여 다른 시트에 붙여 넣는 방법 VBA

내가하려는 것은 고유 한 회사에 대한 주석을 찾아서 복사하거나 잘라내어 같은 통합 문서의 "내역 설명"시트에 붙여 넣을 수있는 매크로를 만드는 것입니다. 나는 지난 코멘트에 대한 기록을 유지할 수있다. 이 작업을 수행하는 매크로를 만드는 방법이 있습니까? 나는 정확한 셀 이름을 넣으면 그 주석을 복사하여 붙여 넣을 것이지만 회사 이름에 입력 할 수있는 셀을 하나 지정할 수 있는지보고 싶다. 매크로는 다음과 같이 보일 것이다. 해당 셀에 무엇이 있는지 다음 해당 메모를 복사하여 뒷 시트에 붙여 넣은 다음 새 메모를 입력 할 수 있도록 셀을 지우십시오. 나는 이것이 심지어 원격으로 가능한지 전혀 모른다. 그러나 어떤 도움이라도 크게 인정 될 것이다!

Sub Range_copy() 
Dim cellwant As Variant 
Dim cellhistory As Variant 
Dim LRow As Variant 
Dim Account As Variant 


Worksheets("AAG").Select 

Worksheets("AAG").Range("I3").Select 
cellwant = Selection.Value 
FindString = Sheets("AAG").Range("B5:B65").Value 

cellwant = Selection.Value 

Worksheets("AAG").Range(cellwant).copy 
Worksheets("Sheet2").Activate 

Worksheets("Sheet2").Range("A1").Select 
+2

['.Select' 사용을 피하는 방법] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)을 읽는 것이 좋습니다. 이렇게하면 변수를 선택하는 대신 데이터를 보관할 변수를 설정하는 방법이 표시됩니다. – BruceWayne

+0

VBA를 처음 사용하기 때문에 디버깅 시간을 절약 할 수있는 또 다른 팁을 제공 할 것입니다. 스크립트의 시작 부분에 항상 Option Explicit을 쓰십시오. 이렇게하면 모든 변수가 선언되었는지 먼저 확인하므로 오타가있는 변수에 값을 설정하지 않습니다. 자세한 정보 https://msdn.microsoft.com/en-us/library/y9341s4f.aspx – RCaetano

답변

0

'해당 의견'이 회사 이름에 어떤 영향을 미치는지에 대한 질문이 다소 모호합니다. 그러나, 당신이 찾고있는 것은 Worksheet_Change 이벤트를 사용하여 수행 할 수 있다고 생각합니다.이 이벤트는 주어진 워크 시트에서 변경이있을 때마다 자동으로 트리거됩니다.

이 코드를 주석이 포함될 워크 시트의 시트 개체 (모듈 아님)에 넣으십시오. 필요에 따라 상단의 상수를 교체하십시오. 변경이 이루어질 때마다 자동으로 실행됩니다. 우리가 지정한 컬럼에서 변경이 이루어지고 있는지 확인합니다 (원하는 경우 지정된 셀이 될 수 있습니다). 변경 사항이 있으면 레코드 시트에있는 첫 번째 빈 셀을 찾아 그 셀의 값을 복사합니다. 그 다음에 새로운 셀을 위해 타겟 셀을 클리어하고 그것을 재 선택한다.

+0

정말 고마워요! 나는 이것이 내가 올바른 방향으로 나아가고 있다고 생각한다. 해당 코멘트에 의해 의미하는 것은 레코드 시트에 첫 번째 시트에있는 동일한 회사 목록이 있으므로 백 시트에있는 해당 회사 옆에 주석을 복사해야합니다. 당신이 보낸 코드에 관한 유일한 것은 첫 번째 시트의 주석을 레코드 시트에 복사 할 수 있기를 바란다는 것입니다. 새로운 코멘트를 복사하고 싶지는 않습니다. 왜냐하면 그 말이 맞다면 아직 "레코드 시트"에있을 필요가 없기 때문입니다. 다시 감사합니다! –

+0

유감스럽게도 코드를 실행할 수있는 변경 전 이벤트가 없기 때문에 변경 전의 주석 값을 가져 오는 매우 우아한 방법은 없습니다. 이 매크로를 트리거하는 것은 실제 변경 사항입니다. 우아한 방법은 없지만 ... 방법이 있습니다. 이 옵션을 반영하기 위해 내 대답을 업데이트했습니다. – Werrf

+0

고맙습니다! 이것은 위대합니다. 마지막 질문으로, 다음 빈 행 대신 해당 백 시트에 해당 회사 옆에 주석을 붙여 넣을 수있는 방법이 있습니까? 각 시트는 동일한 양의 행을 가지며, 다음 열의 반대쪽에 올바른 위치에 붙여 넣기를 원합니다. 이것이 VBA에서 모두 가능한지 확실하지 않지만 물어볼 것이라고 생각했습니다. 고맙습니다 ! –

관련 문제