0

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

サブ終了

4

1 に答える 1

0

これが私が見つけた答えです:

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

End Sub
于 2013-01-25T17:32:34.667 に答える