Jak sprawić, by produkt tego fragmentu VBA dynamicznie aktualizował tabelę?

0

Mam arkusz główny ze wszystkimi moimi danymi. Z szacunkiem „ukradłem” poniższy kod, aby skopiować wszystkie wiersze zawierające określony ciąg tekstowy w drugiej kolumnie do innego arkusza.

For Each r In Src.Range("B2:B" & LastRow)
 If r.Value = "1. Early Season Visits" Then
 If CopyRange Is Nothing Then
            Set CopyRange = r.EntireRow
    Else
            Set CopyRange = Union(CopyRange, r.EntireRow)
    End If
 End If
Next r
If Not CopyRange Is Nothing Then
CopyRange.Copy Dst.Range("A1")
End If
End Sub

Powyższe formatowanie zostało pomieszane, ale powinieneś o tym pomyśleć. To działało zgodnie z reklamą po tym, jak wprowadziłem korekty dla mojego konkretnego przypadku. Próbował nawet przenieść zasady formatowania warunkowego - chociaż musiałem wprowadzić drobne poprawki do wszystkich, aby to zrobić poprawnie, ponieważ excel zrobił pewne względne bzdury.

Problemy z powyższymi są:

  1. Wyniki są statyczne. Jeśli dokonam zmiany w Arkuszu głównym, nie są one aktualizowane w arkuszu, w którym działa ten kod. Jest na to lepszy / inny sposób, aby to zrobić, aktualizując wszystkie arkusze.
  2. Oczekuję, że jeśli zaktualizuję ręcznie, uruchamiając ponownie kod, ponownie zepsuje formatowanie warunkowe - co nie jest nieznaczną poprawką.

Czy jest więc lepszy sposób na robienie tego, co chcę osiągnąć? Jeśli tak, co to jest?

Ten idiota
źródło

Odpowiedzi:

0

Możesz wstawić formuły do ​​każdej komórki zamiast wartości

For Each r In Src.Range("A2:A" & LastRow)
  If r.Value <> "9999999**" Then
      Dst.Range("A" & r.row).Formula = "=Sheet6!A" & r.row
      Dst.Range("B" & r.row).Formula = "=Sheet6!B" & r.row
  ...and so on...

  End If
Next r

W odpowiedzi na twoje pytanie założę, że wiesz, gdzie umieścić kod, a problemem jest to, co robi.

Dst.Range("A" & r.row).Formula = "=Sheet6!A" & r.row

Gdy r przechodzi przez wszystkie komórki w Arkuszu 6, kolumnie A, zajmie wiersz bieżącego r ( r.row) i wstawi formułę do odpowiedniej komórki Arkusza 7. Więc jeśli r jest pierwszą komórką w Arkuszu 6 (A1), to w komórce A1 Arkusza7 zostanie wstawiona następująca formuła: =Sheet6!A1a Arkusz B1 będzie miał =Sheet6!B1... i tak dalej ...

Czasami przydaje się próba ręcznego wstawienia formuł, aby lepiej zorientować się, jakie powinny być przed zakodowaniem ich w makrze

cybernetic.nomad
źródło
Pozwólcie, że poprzedzę to, dziękując za odpowiedź, ale nie jestem na poziomie, aby wiedzieć, co z tym zrobić?
Ten idiota