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 accepter2.
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!
Vous devez vous connecter pour publier un commentaire.
Voici la réponse que j'ai trouvé: