vba excel 选择正确的工作表
vba excel choosing the right worksheet
问题出在代码末尾的 "Intersect" 部分。它持续 运行 只有当新的 sheet 被带到前台时。
此外,有没有办法在没有 "with worksheet(" 传播的情况下与命令 "Intersect" 合作")"?
Sub Schaltfläche2_Klicken()
Dim wb As Workbook, wq As Object
Dim ws As Worksheet, datdatum
Set wb = Workbooks.Add
Set ws = wb.Worksheets("Tabelle1")
ws.Select
ActiveWindow.Zoom = 80
ws.Name = "Spread"
datdatum = Now
Set wq = Workbooks.Open
(Filename:="C:\Users\topal\Desktop\Spreaddeterminierung\Fundings 020718.xls")
wq.Sheets("Hypothekenbanken").Range("A11:P54").Copy
ws.Range("A3").PasteSpecial
wq.Sheets("Landesbanken").Range("A12:P38").Copy
ws.Range("A50").PasteSpecial
With Worksheets("Spread")
Intersect(.Range("4:92"), Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
End With
End Sub
您错过了第二个 Range
语句中的 .
...
Intersect(.Range("4:92"), Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
应该是...
Intersect(.Range("4:92"), .Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
假设您在模块中编写此子程序,前面没有 .
的 Range
将针对活动 (foreground/frontmost) 工作表。另一方面,如果您在工作表中编写此子程序,则前面没有 .
的 Range
会针对您正在编码的工作表。感谢@Vityata 指出这一点!
在回答您的第二个问题时,您可以通过在 .Range
语句前面明确说明工作表来取消 With
块,例如 ...
With Worksheets("Spread")
Intersect(.Range("4:92"), Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
End With
会变成
Intersect(Worksheets("Spread").Range("4:92"), Worksheets("Spread").Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
问题出在代码末尾的 "Intersect" 部分。它持续 运行 只有当新的 sheet 被带到前台时。
此外,有没有办法在没有 "with worksheet(" 传播的情况下与命令 "Intersect" 合作")"?
Sub Schaltfläche2_Klicken()
Dim wb As Workbook, wq As Object
Dim ws As Worksheet, datdatum
Set wb = Workbooks.Add
Set ws = wb.Worksheets("Tabelle1")
ws.Select
ActiveWindow.Zoom = 80
ws.Name = "Spread"
datdatum = Now
Set wq = Workbooks.Open
(Filename:="C:\Users\topal\Desktop\Spreaddeterminierung\Fundings 020718.xls")
wq.Sheets("Hypothekenbanken").Range("A11:P54").Copy
ws.Range("A3").PasteSpecial
wq.Sheets("Landesbanken").Range("A12:P38").Copy
ws.Range("A50").PasteSpecial
With Worksheets("Spread")
Intersect(.Range("4:92"), Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
End With
End Sub
您错过了第二个 Range
语句中的 .
...
Intersect(.Range("4:92"), Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
应该是...
Intersect(.Range("4:92"), .Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
假设您在模块中编写此子程序,前面没有 .
的 Range
将针对活动 (foreground/frontmost) 工作表。另一方面,如果您在工作表中编写此子程序,则前面没有 .
的 Range
会针对您正在编码的工作表。感谢@Vityata 指出这一点!
在回答您的第二个问题时,您可以通过在 .Range
语句前面明确说明工作表来取消 With
块,例如 ...
With Worksheets("Spread")
Intersect(.Range("4:92"), Range("F:F,H:H,J:J,M:M")).BorderAround , , 1
End With
会变成
Intersect(Worksheets("Spread").Range("4:92"), Worksheets("Spread").Range("F:F,H:H,J:J,M:M")).BorderAround , , 1