/ / VBA Open excel, modyfikuj (Rank), Zamknij excel - excel, vba, excel-vba

VBA Open excel, modyfikuj (Rank), Zamknij excel - excel, vba, excel-vba

Próbuję użyć programu Excel (2013), aby otworzyćistniejącego dokumentu programu Excel, zmodyfikuj go, dodając kod klasyfikacji, a następnie zamykając go. Mój kod otworzy dokument programu Excel, ale nie jestem pewien, jak zaimplementować sekcję ByVal Target As Range. Nie wiem wystarczająco dużo o VBA, aby umieścić makro w makrze. Propozycje?

Sub Macro1()
Workbooks.Open Filename:= _
"C:UsersXDesktoptestprogram2.xlsx"

Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Or Target.Cells.Count > 1 Then Exit Sub
"Dim SortRange As Range
Set SortRange = Range(("A1"), Cells(Rows.Count, 13).End(xlUp))
SortRange.Sort Key1:=Range("M2"), Order1:=xlAscending, Header:=xlYes
End Sub

"File to Macro (Should be same as above)

ActiveWorkbook.SaveAs Filename:= _
"C:UsersXDesktoptestprogram2.xlsx" _
, AccessMode:=xlShared
ActiveWorkbook.Close
End Sub

Odpowiedzi:

0 dla odpowiedzi № 1

Ciekawa próba, ale całkiem nie tak. Musisz pochodzić z JavaScript lub czegoś, w którym można zagnieździć procedury (JS ma zamknięcia). Niestety, nie ma takich funkowych rzeczy w VBA. Proszę usunąć wewnętrzną osłonę na zewnątrz zewnętrznej części i umieścić w module "za" arkusz, do którego się odnosi.


0 dla odpowiedzi nr 2

Wezwij drugi okręt podwodny z pierwszego subu, ale nie umieszczaj ich wewnątrz.

Sub Macro1()
Workbooks.Open Filename:= _
"C:UsersXDesktoptestprogram2.xlsx"

Worksheets("program2.xlsx").Activate
Call Worksheet_Change

ActiveWorkbook.SaveAs Filename:= _
"C:UsersXDesktoptestprogram2.xlsx" _
, AccessMode:=xlShared
ActiveWorkbook.Close
End Sub
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Or Target.Cells.Count > 1 Then Exit Sub
"Dim SortRange As Range
Set SortRange = Range(("A1"), Cells(Rows.Count, 13).End(xlUp))
SortRange.Sort Key1:=Range("M2"), Order1:=xlAscending, Header:=xlYes
End Sub