programing

VBA 복사 셀 값 및 형식

megabox 2023. 6. 3. 08:22
반응형

VBA 복사 셀 값 및 형식

값뿐만 아니라 글꼴 스타일(예: 굵거나 굵지 않음)을 복사하려면 다음 코드를 어떻게 수정해야 합니까?감사해요.

Private Sub CommandButton1_Click()
Dim i As Integer
Dim a As Integer
a = 15
For i = 11 To 32
  If Worksheets(1).Cells(i, 3) <> "" Then
    Worksheets(2).Cells(a, 15) = Worksheets(1).Cells(i, 3).Value
    Worksheets(2).Cells(a, 17) = Worksheets(1).Cells(i, 5).Value
    Worksheets(2).Cells(a, 18) = Worksheets(1).Cells(i, 6).Value
    Worksheets(2).Cells(a, 19) = Worksheets(1).Cells(i, 7).Value
    Worksheets(2).Cells(a, 20) = Worksheets(1).Cells(i, 8).Value
    Worksheets(2).Cells(a, 21) = Worksheets(1).Cells(i, 9).Value
    a = a + 1
  End If
Next i

값을 직접 설정하는 대신 복사/붙여넣기를 사용하여 다음을 시도할 수 있습니다.

Worksheets(2).Cells(a, 15) = Worksheets(1).Cells(i, 3).Value

사용해 보십시오.

Worksheets(1).Cells(i, 3).Copy
Worksheets(2).Cells(a, 15).PasteSpecial Paste:=xlPasteFormats
Worksheets(2).Cells(a, 15).PasteSpecial Paste:=xlPasteValues

글꼴을 굵게 설정하려면 기존 할당을 유지하고 다음을 추가합니다.

If Worksheets(1).Cells(i, 3).Font.Bold = True Then
  Worksheets(2).Cells(a, 15).Font.Bold = True
End If

Microsoft의 Excel VBA 설명서에 있는 이 페이지는 https://learn.microsoft.com/en-us/office/vba/api/excel.xlpastetype 에 도움이 되었습니다.

붙여넣기 방법을 사용자 지정할 수 있는 여러 옵션을 제공합니다.예를 들어 xlPasteAll(아마도 찾고 있는 것), xlPasteAllSourceTheme를 사용하여 또는 xlPasteAllExceptBorders를 사용할 수 있습니다.

jpw 이후에는 코드 줄이 많은 것을 절약하기 위해 작은 서브루틴에 솔루션을 캡슐화하는 것이 좋을 수 있습니다.

Private Sub CommandButton1_Click()
Dim i As Integer
Dim a As Integer
a = 15
For i = 11 To 32
  If Worksheets(1).Cells(i, 3) <> "" Then
    call copValuesAndFormat(i,3,a,15)        
    call copValuesAndFormat(i,5,a,17) 
    call copValuesAndFormat(i,6,a,18) 
    call copValuesAndFormat(i,7,a,19) 
    call copValuesAndFormat(i,8,a,20) 
    call copValuesAndFormat(i,9,a,21) 
    a = a + 1
  End If
Next i
end sub

sub copValuesAndFormat(x1 as integer, y1 as integer, x2 as integer, y2 as integer)
  Worksheets(1).Cells(x1, y1).Copy
  Worksheets(2).Cells(x2, y2).PasteSpecial Paste:=xlPasteFormats
  Worksheets(2).Cells(x2, y2).PasteSpecial Paste:=xlPasteValues
end sub

(현재 위치에 Excel이 없으므로 버그는 테스트되지 않은 것으로 양해 부탁드립니다.

아론 블러드 씨의 제공으로 오즈그리드에서 이것을 발견했습니다. 단순한 직접적이고 작업입니다.

Code:
Cells(1, 3).Copy Cells(1, 1)
Cells(1, 1).Value = Cells(1, 3).Value

하지만, 저는 당신이 우리에게 질문을 하기 위해 지나치게 단순화된 예를 제공한 것이 아닌가 의심됩니다.한 범위에서 다른 범위로 형식을 복사하려는 경우 다음과 같습니다.

Code:
Cells(1, 3).Copy
    Cells(1, 1).PasteSpecial (xlPasteFormats)
    Application.CutCopyMode = False

언급URL : https://stackoverflow.com/questions/25461314/vba-copy-cells-value-and-format

반응형