1

範囲をコピーして貼り付けようとしています。28 x 28 の数値グリッドを作成して値を「回転」させ、範囲が次の列に貼り付けられるたびに、範囲が 1 行ずつ下に移動し、最後の値が「オーバーフロー」して次の行の先頭に戻ります。ここまで来ましたが、オーバーフローの部分で困惑しています (私は VBA の初心者です)

Sub Test()

Dim oRange As Range
Set oRange = ActiveSheet.Range("A1:A28") 

Dim i As Integer
For i = 1 To 28
    oRange.Copy
    oRange.Offset(i, i).PasteSpecial xlPasteAll
Next i

End Sub

また、セルの値とフォーマットをコピーして貼り付ける必要があります

皆さんが助けてくれることを願っています ありがとう

ダン

4

1 に答える 1

1
Sub Test()

    Dim oRange As Range
    Dim startColumn As String
    Dim rangeStart As Integer
    Dim rangeEnd As Integer
    Dim cellCount As Integer
    Dim i As Integer

    startColumn = "A"
    rangeStart = 1
    rangeEnd = 28
    cellCount = rangeEnd - rangeStart + 1

    For i = 1 To cellCount - 1
        Set oRange = ActiveSheet.Range(startColumn & rangeStart & _
                                ":" & startColumn & (rangeEnd - i))
        oRange.Copy
        oRange.Offset(i, i).PasteSpecial xlPasteAll

        Set oRange = ActiveSheet.Range(startColumn & (rangeEnd - i + 1) & _
                                ":" & startColumn & rangeEnd)
        oRange.Copy
        oRange.Offset((-1 * cellCount) + i, i).PasteSpecial xlPasteAll
    Next i

End Sub

EDIT:

to insert a blanck row at index 'i':

Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown

to insert 5 rows at the top of the worksheet insert a row 5 times at index 1:

For i = 1 To 5
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
Next
于 2009-10-14T16:07:03.843 に答える