문제를 집중적으로 설명하고 시나리오와 관련된 모든 중요하지 않은 문제/스크립트를 제거합니다.여러 인접하지 않은 범위에서 선택한 범위의 일부를 변경하는 방법
사용자가 인접하지 않은 셀을 여러 개 선택합니다. VBA는 몇 가지 작업을 수행 한 다음 열을 삽입합니다. 선택한 셀이 열의 오른쪽에있는 경우 내용은 원래 선택된 셀의 한 열 오른쪽으로 이동합니다. exit sub 이전에 원래 내용으로 셀을 다시 선택해야합니다. 예컨대
,
- 사용자가 "A1", "C3"을 선택 "D4 : E6를".
- VBA를 이제 "B"
- "C3"의 내용 및 하나의 열을 삽입 "D4 : E6은"I "는 A1을 선택 VBA 필요"F6 E4 "
- "D3 "및 이동 ","D3 "및"E4 : F6 "을 선택하십시오.
이 나는 몇 가지 방법을 고려했다 :
한 열 오른쪽에있는 전체 선택을 오프셋.
selection.offset(0,1).select
이 "A1"는 "B1"로 이동하는 것과 같이 좋은 해결책이 아니다. 사용자가 선택한 셀이 모두 삽입 된 열의 오른쪽에있는 경우에만 확인하면됩니다.
각 셀 선택 범위 (선택한 범위)를 배열에 넣습니다. 영향을받는 셀의 범위를 변경하십시오. vba를 사용하여 모두 다시 선택하십시오. 문제는 내가 쓴 VBA는 한 번에 범위의 배열 (여러 개의 인접하지 않은 셀)을 선택할 수 없다는 것입니다. 배열의 마지막 셀만 선택합니다. 다음은 요약 된 코드입니다.
Sub mtArea() Dim Cell, Rg, sRg() As Range Dim h, i, j, k, noCell, Cnt As Long Set Rg = Selection noCell = Rg.Cells.Count k = 0 ' assign each cell in selection to a specific array If Rg.Areas.Count > 1 Then ReDim sRg(noCell) For Each Cell In Rg k = k + 1 Set sRg(k) = Cell Next Cell End If ' select the new located cells For i = 1 To noCell If sRg(i).Column > 5 Then ' assuming insert column is "E" h = 1 Else h = 0 End If sRg(i).Offset(0, h).Select Next i End Sub
이 경우 원래 범위의 마지막 셀만 선택됩니다. 전체 sRg() 범위 배열을 선택하는 방법이 있습니까?
- I의이 방법 탐색 희망
:
Dim Rg as Range Set Rg = Selection
사용자가 다수의 비 인접 셀을 선택하고, 각 셀은 RG에 변수 위치 범위 변경 VBA하는 방법이 있습니까?
어떻게해야합니까?
감사합니다.
안녕하세요 게리의 학생, 감사합니다! 이것은 내 프로젝트에 필요한 것입니다. 선택한 범위를 변수 또는 배열에 넣는 대신, 이름을 지정해야합니다! 선택한 셀이 새로 삽입 된 열과 함께 이동했습니다. 훌륭함! 도와 주셔서 감사합니다. – Chen
당신은 아주 환영합니다! –
참고로, 범위를 선택한 후에도 범위 이름을 제거해야합니다. 그렇지 않으면이 범위 이름이 통합 문서에 계속 나타납니다. 범위 ("이전"). Name.Delete – Chen