Excel: Déplacer la sélection à la prochaine ligne vide dans la colonne spécifique, et d'énumérer sélection par date et par type

Nouveau à VBA, alors soyez gentil.

J'ai un 7 colonnes, Un:H. La première colonne est un identifiant numérique unique (commence à 0 et devrait augmenter à chaque fois je colle une nouvelle sélection par le biais de cette macro). La deuxième colonne est la Date qui est inscrite à la main après avoir été invité.

Je veux être en mesure de mettre en évidence une plage de cellules, activer la macro, et la macro déplacer les données en surbrillance et de la coller dans la prochaine partie de l'espace entre le C et j'ai colonnes. Au début, la macro affiche une boîte de dialogue demande à l'utilisateur pour la date. Je veux à cette date pour être entré à chaque point le long de la Colonne B (dans la prochaine cellule vide) pour chaque cellule de la sélection.

Voici comment les colonnes sont mises en forme maintenant: http://i.imgur.com/7ytAnr9.png

Ensuite, pour chaque cellule de la sélection, je veux qu'il soit associé à un IDENTIFIANT numérique. Ainsi, le script serait de regarder pour voir ce qui était le dernier nombre dans la colonne A, ajouter à cela, et de le coller pour chaque cellule de la sélection en cours.

Voici mon code, mais comme je suis nouveau à cela, il est complètement cassé.

Pour la Boite:

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

EDIT: trouvé une solution pour l'ID de l'énumération problème de colonne et de mouvement:

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

Laissez-moi savoir si il existe un moyen plus efficace de le faire.

Trouvé une solution moi-même, pour les autres:

Sous SuperMacro()

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

  • Si vous avez trouvé la solution sur votre propre, vous pouvez ajouter de la réponse et de l'accepter, ce sera plus efficace.
  • Parseltongue aka TomRiddle... vous avez deux choix.. 1. répondre et accepter 2. près la question - votre appel..
  • Je préfère qu'Il-Qui-Doit-Pas-Être-Nommé, mais je n'en numéro 1. Merci!
InformationsquelleAutor Parseltongue | 2013-01-24