/ / Range, Select, Change contents, Alignment ou Offset? - excel, vba, excel-vba

Plage, Sélection, Modifier le contenu, Alignement ou Décalage? - excel, vba, excel-vba

J'ai un cas au moment où je me déplaceen bas de la colonne avec les noms ci-dessous et en cliquant sur une macro, qui marque ensuite l'indicateur avec un 35, quelques colonnes vers la droite. En raison de la nature de la page, je souhaite compter le fond de la liste lorsque je vérifie un nom et active la macro. Donc, ce que je veux faire, au lieu de simplement sélectionner et marquer le nom que je veux, est de marquer cette ligne et toutes les lignes précédentes avec un 35. De cette façon, les graphiques et la valeur COUNTA calculée changent avec la progression de l'examinateur en bas de la feuille.

         Totals X   Y   Z   T   Marker  Indicator
TOM     xxxxxxx xxxxxxx xxxxxxx xxxxxxx     35
HARRY   xxxxxxx xxxxxxx xxxxxxx xxxxxxx
PAUL    xxxxxxx xxxxxxx xxxxxxx xxxxxxx
PETER   xxxxxxx xxxxxxx xxxxxxx xxxxxxx     35
TIM     xxxxxxx xxxxxxx xxxxxxx xxxxxxx

Mes scripts pour la macro sont les suivants:

Sub tester2()
Set Rng = ActiveCell
"
" tester2 Macro
"

"
ActiveCell.Offset(0, 6).Select

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0

ActiveCell.Value = 35

Application.Goto Rng

End With
End Sub

Ensuite, en tant que FYI, ma macro d’exportation n’est censée exporter que les éléments de campagne mis en évidence manuellement (et non les éléments précédents automatiquement remplis).

Sub export()

Dim cell As Range
Dim lastRow As Long, i As Long

lastRow = Range("A" & Rows.Count).End(xlUp).Row
i = 1

For Each cell In Sheets(1).Range("G1:G" & lastRow)
If cell.Value = 35 Then
cell.EntireRow.Copy Sheets(2).Cells(i, 1)
i = i + 1
End If
Next

End Sub

Donc, ce que j'ai pensé, est-il possible de, pourMa première macro, je peux avoir le marqueur (35) à 6 colonnes à droite. Ont toutes les lignes précédentes marquées aussi, alors peut-être juste un marqueur dans la 7ème colonne pour cette ligne. De cette façon, le nombre de lignes calculé est utilisé dans la nouvelle colonne 6. Et mon exportation dans la colonne 7.

Réponses:

0 pour la réponse № 1

Ceci peut être simplifié assez facilement pour affecter les cellules de 2 à la ligne actuelle, six colonnes à droite.

Sub tester2()

Dim col As Integer
col = ActiveCell.Column + 6
Dim row As Integer
row = ActiveCell.row
Dim rng As Range
Set rng = Range(Cells(2, col), Cells(row, col))

For Each c In rng
With c
.Interior.Pattern = xlSolid
.Interior.PatternColorIndex = xlAutomatic
.Interior.Color = 65535
.Interior.TintAndShade = 0
.Interior.PatternTintAndShade = 0
.Value = 35
End With
Next
End Sub

Si vous souhaitez indiquer où se trouve la dernière exportation, vous pouvez ajouter quelque chose comme:

ActiveCell.Offset(, 7) = "export"
Range(Cells(1, col + 1), Cells(row - 1, col + 1)).Clear