![Conselho de macro - Colando linhas em uma nova planilha, se determinadas células indicarem "NÃO"](https://rvso.com/image/1502897/Conselho%20de%20macro%20-%20Colando%20linhas%20em%20uma%20nova%20planilha%2C%20se%20determinadas%20c%C3%A9lulas%20indicarem%20%22N%C3%83O%22.png)
Gostaria de alguns conselhos sobre VBA e Macros.
Eu gostaria de uma maneira de vincular planilhas (planilhas 1 a 6) com uma folha mestre (planilha 7).
Se a linha contiver"NÃO"em coluna I
(em todoplanilhas 1 a 6), o código pode copiar e colar essa linha emplanilha 7?
Então se a linha (emplanilhas 1 a 6) foi alterado para"SIM" outro código será capaz de excluir essa linha deplanilha 7?
Para algum contexto,planilhas 1 a 6são uma lista de empregos e o'SIM'&'NÃO'são se o cliente tiver pago. Se'NÃO'eles são adicionados à lista de devedores emplanilha 7. Se'SIM'eles precisam ser retirados da lista de devedores.
Responder1
Este código irá ajudá-lo:
Public Sub debtors()
Dim wkb As Workbook
Dim wks As Worksheet
Dim wksdest As Worksheet
Set wkb = ThisWorkbook
Set wksdest = wkb.Sheets("Sheet7")
wksdest.Rows.Clear 'Clear the contents of Sheet7
destRow = 1 'First row on Sheet7
For i = 1 To 6 'Loop through Sheets 1 to 6
newIndex = Right(Str(i), 1)
thisSheet = "Sheet" + newIndex
Set wks = wkb.Sheets(thisSheet)
wks.Activate
'Selects column I
Columns("I:I").Select
'Find a coincidence with the string "NO"
Set cell = Selection.Find(What:="NO", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'If there is a coincidence (is Not Nothing)
If Not cell Is Nothing Then
firstRow = cell.Row
newRow = cell.Row
'Copy the row and paste on Sheet7
wks.Rows(newRow).Copy
wksdest.Rows(destRow).PasteSpecial xlPasteValues
destRow = destRow + 1
foundValue = True
'Find next coincidences in the same sheet
While foundValue
Set cell = Selection.FindNext(cell)
If Not cell Is Nothing Then
newRow = cell.Row
If newRow <> firstRow Then
wks.Rows(newRow).Copy
wksdest.Rows(destRow).PasteSpecial xlPasteValues
destRow = destRow + 1
Else
foundValue = False
End If
Else
foundValue = False
End If
Wend
End If
Next i
wksdest.Activate
End Sub
Abra VBA/Macros com ALT+ F11, emEsta pasta de trabalhoinsira um novo módulo e cole o código no lado direito.
Execute-o clicando no triângulo verde.
Coloquei comentários no código para que você entenda como ele funciona.
Você também pode executá-lo passo a passo clicando na primeira linha e depois seguir cada etapa pressionando F8.