VBAは初めてなので、優しくしてください。
A:H の 7 つの列があります。最初の列は一意の数値識別子です (0 から始まり、このマクロを使用して新しい選択範囲を貼り付けるたびに増加する必要があります)。2 番目の列は、プロンプトが表示された後に手で入力する日付です。
セルの範囲を強調表示し、マクロをアクティブ化し、マクロが強調表示されたデータを移動して、C 列と I 列の間の次の使用可能なスペースに貼り付けられるようにしたいと考えています。最初に、マクロはユーザーに日付を尋ねるダイアログ ボックスを表示します。この日付を、選択範囲内の各セルの列 B (次の空のセル) に沿って各ポイントに入力したいと考えています。
列のフォーマットは次のとおりです: http://i.imgur.com/7ytAnr9.png
次に、選択範囲内の各セルに対して、数値 ID を関連付けたいと思います。したがって、スクリプトは列 A の最後の数字を確認し、それに 1 を追加して、現在の選択範囲の各セルに貼り付けます。
これが私のコードですが、これは初めてなので、完全に壊れています。
ダイアログ ボックスの場合:
Sub SuperMacro()
Dim c As Object
Dim dateManager As String
dateManager = InputBox(Prompt:="Enter the Date for Selection", _
Title:="Date Manager", Default:="1/24/2013")
If strName = "Your Name here" Or _
strName = vbNullString Then
Exit Sub
End If
For Each c In Selection
Range("A1").End(xlDown).Offset(1, 0).Select 'Paste the date for each cell in selection
ActiveSheet.Paste
Next c
'Attempt to move all date from selected area to next available chunk of space between C1 and H1.
Selection.Copy
Range("C1:H1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
編集:ID列挙の問題と列の移動の解決策を考え出しました:
Sub CopyTest()
Dim a As Range, b As Range
Dim value As Integer
Selection.Copy
Set a = Selection
Range("B1:H1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
value = (Range("A1").End(xlDown)) + 1
For Each b In a.Rows
Range("A1").End(xlDown).Offset(1, 0).Select
ActiveCell.value = value
Next
End Sub
これを行うより効率的な方法があれば教えてください。
他の人のために、自分で解決策を見つけました:
サブスーパーマクロ()
Dim a As Range, b As Range
Dim currentID As Integer
Set a = Selection
Selection.Cut Range("C1:I1").End(xlDown).Offset(1, 0) 'Pastes to appropriate column
currentID = Range("A1").End(xlDown).Value
For Each b In a.Rows
Range("A1").End(xlDown).Offset(1, 0) = currentID + 1
Range("B1").End(xlDown).Offset(1, 0) = InputBox("Enter Date", "Date Helper")
Next b
サブ終了