2014-02-25 1 views
0

안녕하세요 동적으로 열 번호를 변경했습니다. 해당 열 번호를 사용하여 2 개의 셀을 선택해야합니다. 셀 명령을 사용하여 둘 이상의 셀을 선택할 수 없으며 문자를 기준으로 열을 모를 때 Range를 사용할 수 없으므로 같은 해결책을 찾도록 도와주십시오. 내 코드는 예를 들어 사전Visual Basic - 문자가 아닌 열 번호를 사용하는 범위 선택 방법

에서

감사 :

Dim Row_num as integer 

for x=1 to 100 
    Thisworkbook.Sheets("Sheet1").range((Row_num,x),(Row_num,x+1)).select 
    selection.merge 
next 
+0

내가 잃어버린, 그래서하는 열은 조작 할 수 있습니까? 마지막 열? 또는 사이 어딘가에? 네가 나에게 묻는다면 그렇게 명확하지 않다. – L42

+0

행과 열 모두 1에서 시작합니다. 즉, 열 A는 1, 열 AA는 27입니다. – PatricK

+0

셀을 사용하여 범위를 정의 할 수 있다는 것을 알고 계십니까? 나는 당신이 병합으로 무엇을하려고하는지 잘 모르겠습니다. – Brad

답변

1

을에 주석을 참조, 내가 두 개의 작은하지만 정말 도움이 Range 개체의 메서드를 추가 할 수 셀, 즉 Range("A1").Offset(3, 2)B3이됩니다. 그리고 .Resize은 이름이 말하는대로 범위를 조정합니다. 즉 Range("A1").Resize(3, 2)A1:B3이됩니다.

두 요소를 결합 할 수 있습니다. Range("A1").Offset(1, 1).Resize(3, 2)의 결과는 B2:C4입니다. 귀하의 경우에는

, 당신은 사용할 수 있습니다

Option Explicit 'always use Option Explicit, as it forces you to declare variables 

Sub MergeFields 
    Dim lngRow As Long 
    Dim rngTopLeft As Range 

    Set rngTopLeft = Thisworkbook.Worksheets("Sheet1").Range("A1") 'change A1 accordingly! 

    For lngRow = 1 To 100 
     rngTopLeft.Offset(lngRow).Resize(1, 2).Merge 
    Next lngRow 
End Sub 
2

올바른 사용법은 다음과 같습니다 당신의 코드에서 여러 가지 다른 문제가 있습니다

<WorkBook>.<WorkSheet>.Range(<CornerCell>, <OpositeCornerCell>) 

. .Offset.Resize : Range.Offset 할 수 있습니다 "이동"A를

크리스 '훌륭한 대답 또한이 코드

Dim Row_num as Long ' Use Long as there may be more than 32767 rows, and its faster 
Dim x as Long ' Dim all your variables 

With Thisworkbook.Worksheets("Sheet1") ' Use With so you can refer to this part repeatedly 
    For x = 1 to 100 Step 2 ' Maybe you meant every second cell, otherwise ranges will overlap 
     ' Refer to two corners of the required Range 
     ' Don't use Select 
     Range(.Cells(Row_num, x), .Cells(Row_num, x + 1)).Merge 
    Next 
End With 
+0

제가 틀리지 않다면, OP는 2 개의 별개의 세포를 선택하려고하지만, 매트릭스가 아닙니다. – sam092

+0

@ sam092 나는 틀렸다고 생각합니다. 그는 인접한 두 개의 셀을 병합하려고합니다. –

관련 문제