Edytuję jedną tabelę, klikam na kolumnę indeksu, za pomoca którego tabele połączyłem. Chcę by otworzyła się druga tabela z wifiltrowanymi pakietami.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim id As String
If Intersect(Target, ListObjects("Table1").ListColumns("Nr_umowy").Range) Is Nothing Then Exit Sub
If Not Target.Cells.Count <> 1 Then
Application.ScreenUpdating = False
id = CStr(Selection)
Windows("contracts_two_tables.xlsm:1").Activate
Sheets("Pakiety").Activate
ActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=1, Criteria1:=id ' , Operator:=xlAnd, Criteria2:="<=" & id4
Application.ScreenUpdating = True
End If
On Error GoTo ErrorHandling
Debug.Print Sheets("Pakiety").ListObjects("Table2").ListColumns("Nr_umowy").DataBodyRange.SpecialCells(xlCellTypeVisible).Count
On Error GoTo 0
Exit Sub
ErrorHandling:
Sheets("Pakiety").Range("A60000").End(xlUp).Offset(1, 0).Formula = "'" & id
End Sub
W trzeciej zakładce mam pivota stworzonego za pomocą MSQuery. Jak go odświeżać?
Ostatecznie takie rozwiązanie zadziałało:
Private Sub Worksheet_Activate()
'ActiveWorkbook.Connections("Query from Excel Files1").ODBCConnection.BackgroundQuery = False
ActiveWorkbook.Connections("Query from Excel Files1").Refresh
Sheets("Podsumowanie").PivotTables("PivotTable1").Update
End Sub
Dodatkowo, chciałbym widzieć obie tabele obok siebie po włączeniu.
Private Sub Workbook_Open()
Sheets("Pakiety").Select
ActiveWindow.NewWindow
Sheets("Umowy").Select
ThisWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
End Sub
Do pierwszego makra dodaję jeszcze Windows("contracts_two_tables.xlsm:1").Activate
tak aby kliknięcie w kod powodowało filtrowanie po kodzie w drugim oknie.
Plik z rozwiązaniem
Brudnopis:
Make selection in sheet 1 filter sheet 2 and on edit add an empty row?? Simple solution for data entry: Auto-copy clicked ID to new row in second table. If nothing entered - cleanup? Reporting: Ideas: http://chandoo.org/wp/2012/04/02/using-excel-as-your-database/ or simply MS Query and
Brak komentarzy:
Prześlij komentarz