2012-07-05 3 views
0

하나의 Excel 시트에서 다른 시트로 데이터를 복사하려고하지만 붙여 넣기 대상이 변수 여야합니다.VBA-Excel에서 변수 위치에 데이터 붙여 넣기

본질적으로 내가하고 싶은 것은 열린 두 권의 시트입니다. 이미 시트 2를 채우는 데이터를 바탕으로

sCurrentAddress = Selection.Address(True, True, xlA1, True)

이 알고리즘은 깔끔하게 원하는 붙여 넣기 위치를 찾아 다음과 같이 이러한 좌표를 저장합니다 첫 번째 시트에서 좌표가이 같은 저장 일부 문자열이있을 것 :

01,239,284,274 : 내가하고 싶은 것을 그리고

sDestinationAddress = Selection.Address(True, True, xlA1, True)

는 다음과 같이 두 번째로 첫 번째 시트의 정보를 붙여이다 하지만 오류 1004가 나타납니다. 런타임 오류 : 범위 클래스의 Select 메서드가 실패했습니다.

지금, 내가 일하고 있어요 첫 번째 값은 A4 될 일이, 내가 "sDestinationAddress"을 통해 내 마우스를 가져 가면, 그것은 sDestinationAddress에 저장된 값이 매크로하지 않는 한 실패 '[exampleFile.xlsx]Sheet 1'!$A$4

것을 나에게 보여줍니다 이 같은 실제 값을 연결 :

내가 Selection.Copy에 대한 인수로 내 sDestinationAddress를 사용하려면 어떻게해야합니까 무엇

'Selection.Copy (Worksheets(1).Range("A4"))

?


(I이 분명치 여전히 길고, 어제는 문자 그대로 미안 해요 내 처음 Visual Basic의보고.) 알고리즘에 대해

: 나는의 정보를 라벨 144 다른 헤더가 아래 6 행. 예를 들어, Inventory_S1_1 열의 데이터를 새 스프레드 시트로 이동하려고합니다. S = Diamond, 1 = Black, _1 = Player 1. 내 알고리즘이 아직 다루지 않은 헤더를 찾습니다. (여기서 Inventory_S1_1은 첫 번째 헤더가 아니며 ' 처리하지 않음), 머리글 아래의 열을 복사하고 플레이어 1의 Black Diamond에 해당하는 새 스프레드 시트에서 위치를 찾은 다음 붙여 넣습니다. 템플릿이 직접 작성 되었기 때문에 붙여 넣기 알고리즘이 제대로 작동하지만 잠재적으로 뒤죽박죽 된 데이터를 검색하므로 검색 알고리즘이 헤더를 찾지 못합니다.

문제는 원시 데이터가있는 시트로 되돌아갑니다. 내가 sCurrentAddress = Selection을 설정 전화 위치를 통해 내 마우스를 올리면
내가 sDestinationAddress = 0
을 붙여 그리고 한 sCurrentAddress= Inventory_S1_2 내가 두 번째 헤더로 이동 한 후 다음 후 나는이 정확히 문제가있는 라인입니다 상당히 확신 것을 보여준다 :

Set rCurrentRange = .Find(What:=sCurrentAddress, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext) 은 내가

Application.Goto rCurrentRange, True ActiveCell.Select Selection.Offset(-1, 1).Select Set sCurrentAddress = Selection

그것은 내가 다음 헤더를 찾고 있어요이 라인의에 따릅니다. 정확한 좌표를 사용하려고하면이 .Find가 작동하는 것처럼 보였지만 이제는 복사 된 자료의 첫 번째 값인 0 (sDestinationAddress)의 첫 번째 인스턴스를 찾습니다.항상 0을 복사하고 있으므로 처음 0을 찾으면 절대 다음 헤더를 찾습니다.

범위 객체에 .Address 속성이 있지만이 경우 도움이되는지 알 수 없습니다.

답변

1

당신은 대신 주소를 사용하는 직접 범위를 사용할 수 있습니다

Dim rngSrc as Range, rngDest as range 

Set rngSrc = Selection 
'do your destination-finding thing 
Set rngDest = Selection 

rngSrc.Copy rngDest 'no need for parentheses here 

EDIT 당신은 거의 그들과 함께 작업하고, 변수에 실제 범위 객체를 저장하는 범위를 선택 할 필요가 없습니다

거의 항상 거리 주소로 일하려고하는 것보다 낫습니다.

특정 셀 또는 범위의 좌표를 유지해야하는 경우 범위 변수에 저장하는 것이 가장 쉬운 방법입니다.

범위 객체의 기본 속성은 "값"입니다. 이는 코드를 단계별로 실행할 때 커서를 범위 변수 위로 가져갈 때 범위의 값을 보는 이유를 설명합니다. 가 표시됩니다. 당신은 단지 한 곳에서 다른 곳으로 셀 값을 복사하는 경우

당신은 심지어 두 개의 범위가 동일한 치수의 경우 .Copy를 사용할 필요가 없습니다 :

rngDestination.Value = rngSource.Value 
+0

이 작업을 수행 않지만, 지금 나는 "나의 장소"를 잃었다. 변수는 셀 값으로 대체 된 것으로 보이며 좌표는 없습니다. 다음 열을 Sheet1에서 복사하여 Sheet2의 다른 위치에 넣어야합니다. 어쩌면 주소 변수를 만들 수도 있습니다. – emmagras

+0

다음 열은'rngSrc.Offset (0,1)' –

+0

어떻게 그게 문제입니까? 한 셀의 내용을 다른 셀로 복사하려고합니까? –