macro
で望ましい結果を達成するのに、いくつかの困難に直面しています。
意図:
sheets(input).column A
にデータのリストがあります(値を持つ行の数は異なるため、アクティブセルが空白になるまでマクロを実行するループを作成しました)。
私のマクロはRange(A2)
から始まり、列Aまでずっと伸びます。空白行にヒットしたときのみ停止します
マクロの望ましい結果は、sheet(input).Range(A2)
のセル値のコピーを開始してsheet(mywork).Range(B2:B6)
に貼り付けることです。
たとえば、「Peter」がセルsheet(input),range(A2)
の値だった場合、marcoが実行され、sheet(mywork) range(B2:B6)
に値が貼り付けられます。すなわち、範囲_B2:B6
_は「Peter」を反映します
次に、マクロはシート(入力)にループバックし、次のセル値をコピーしてrange(B7:B10)
に貼り付けます
例:「Dave」はsheet(input) Range(A3)
の値でしたが、「Dave」はsheet(mywork).Range(B7:B10)
の次の4行に貼り付けられます。 _B7:B10
_は「Dave」を反映します
再び同じプロセスを繰り返すと、今回はrange(A4)
に戻り、値はsheet(mywork)にコピーされ、_B11:B15
_に貼り付けられます。
基本的にプロセスが繰り返されます。
マクロは、sheet(input) column A
のactivecellが空になると終了します。
_Sub playmacro()
Dim xxx As Long, yyy As Long
ThisWorkbook.Sheets("Input").Range("A2").Activate
Do While ActiveCell.Value <> ""
DoEvents
ActiveCell.Copy
For xxx = 2 To 350 Step 4
yyy = xxx + 3
Worksheets("mywork").Activate
With ActiveSheet
.Range(Cells(xxx, 2), Cells(yyy, 2)).PasteSpecial xlPasteValues
End With
Next xxx
ThisWorkbook.Sheets("Input").Select
ActiveCell.Offset(1, 0).Activate
Loop
Application.ScreenUpdating = True
End Sub
_
Private Sub CommandButton1_Click()
Dim Z As Long
Dim Cellidx As Range
Dim NextRow As Long
Dim Rng As Range
Dim SrcWks As Worksheet
Dim DataWks As Worksheet
Z = 1
Set SrcWks = Worksheets("Sheet1")
Set DataWks = Worksheets("Sheet2")
Set Rng = EntryWks.Range("B6:ad6")
NextRow = DataWks.UsedRange.Rows.Count
NextRow = IIf(NextRow = 1, 1, NextRow + 1)
For Each RA In Rng.Areas
For Each Cellidx In RA
Z = Z + 1
DataWks.Cells(NextRow, Z) = Cellidx
Next Cellidx
Next RA
End Sub
代わりに
Worksheets("Sheet2").Range("P2").Value = Worksheets("Sheet1").Range("L10")
これはCopynPaste-メソッドです
Sub CopyDataToPlan()
Dim LDate As String
Dim LColumn As Integer
Dim LFound As Boolean
On Error GoTo Err_Execute
'Retrieve date value to search for
LDate = Sheets("Rolling Plan").Range("B4").Value
Sheets("Plan").Select
'Start at column B
LColumn = 2
LFound = False
While LFound = False
'Encountered blank cell in row 2, terminate search
If Len(Cells(2, LColumn)) = 0 Then
MsgBox "No matching date was found."
Exit Sub
'Found match in row 2
ElseIf Cells(2, LColumn) = LDate Then
'Select values to copy from "Rolling Plan" sheet
Sheets("Rolling Plan").Select
Range("B5:H6").Select
Selection.Copy
'Paste onto "Plan" sheet
Sheets("Plan").Select
Cells(3, LColumn).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
LFound = True
MsgBox "The data has been successfully copied."
'Continue searching
Else
LColumn = LColumn + 1
End If
Wend
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub
そして、Excelでそれを行ういくつかのメソッドがあるかもしれません。