0

最初のワークシートの(列D)のセル値を16個の既存のワークシートの指定されたセルの場所にコピーするためにあなたの助けを求めます


sheet1からsheet2(G5)のD2の値が欲しい

シート1からシート3へのD3(G5)

シート1からシート4へのD4(G5)

D16がsheet16のG5にコピーされるまで、以下同様です。

私は初心者です。いくつかの答えを調べて、自分で解決しようとしましたが、何も起こりませんでした。

Sub latitude()
Dim WS_Count As Integer
Dim I As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
Do Until IsEmpty(ActiveCell)
Sheets("Calculations").Select
Range("d2").Copy
    ActiveCell.Offset(1, 0).Select
'at this point i want it to copy "D3" on next loop
ActiveSheet.Range("G5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Loop
ActiveSheet.Next.Select
' and because the "Sheets("Calculations").Select" above takes it to the first sheet the whole script is a waste till now
Next I
End Sub
4

2 に答える 2

1

これを試してみてください。

Option Explicit
Sub Copy_to_G5()
    Dim sht1 As Worksheet, ws As Worksheet
    Dim i As Integer
    Dim shtname As String

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Set sht1 = Sheets("Sheet1")
    i = 2
    Do Until i = 17
        shtname = "Sheet" & i
        sht1.Cells(i, 4).Copy
        Sheets(shtname).Range("G5").PasteSpecial
    i = i + 1
    Loop

    With Application
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With
End Sub
于 2012-09-06T09:29:50.983 に答える
1

Alistairsの試みは良いですが、私は使用しませんがshtname = "Sheet" & i、代わりに次の解決策を試して、それを少し弾丸で保護することを考えてください(ワークシートの存在);)

Sub Copy_to_G5()
    Dim i As Integer

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    i = 2
    Do Until i = 17
        With ThisWorkbook
        .Worksheets(1).Cells(i, 4).Copy
        .Worksheets(i).Range("G5").PasteSpecial
        End With
    i = i + 1
    Loop

    With Application
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With
End Sub
于 2012-09-06T11:54:21.123 に答える