문 계층 구조와 중첩됨
최근에 이런 일을 몇 번 접했는데 더 쉬운 방법이 없을까 해서...
With Activeworkbook
'Do Stuff
With .Sheets(1)
'More stuff Done
'...
'But now I need to refer to or pass the Sheet in the last With Statement
SomeFunctionAnswer = SomeFunction Activeworkbook.Sheets(1)
End With
'Yet more stuff Done
End With
완전히 작성해야 하나요, 아니면 더 쉽게/깨끗하게 메모할 수 있는 방법이 있나요?아마도 이 경우에만 그 자체를 전달할 수 있는 일종의 속성이나 방법이 있을 것입니다.상위 With에서 속성이나 메서드를 참조하는 것은 어떻습니까?
SomeFunctionAnswer = SomeFunction .Self '???
'OR
SomeFunctionAnswer = SomeFunction .Parent.Name '???
그게 말이 되기를...
답은 쉽고 간단하게 No입니다.
With
조항은 해당 주제의 구성원 및 방법에 대한 접근을 용이하게 하지만, 해당 주제 자체를 참조할 수 있는 어떠한 시설도 제공하지 않습니다.필요할 때는 개체의 이름을 완전히 쓰거나 다른 방법으로 참조해야 합니다.
외부의 대상이 되는 객체의 메소드 및 멤버에 액세스하는 경우 With
조항, 다시 한번 말씀드리지만 완전히 이름을 붙여야 합니다.너With
, 그리고 그 범위 전체를 위해, 겉모습을 완전히 숨깁니다.With
.
따라서 코드를 작성한 방법이 올바른 방법입니다.
와 함께 안쪽에서 바깥쪽으로 그리고 와 함께 바깥쪽으로 옮길 수 있습니다.그러면 Active Workbook 자격을 포기할 수 있습니다.
With Activeworkbook
'Do Stuff
With .Sheets(1)
'More stuff Done
'...
End With
SomeFunctionAnswer = SomeFunction .Sheets(1)
'Yet more stuff Done
End With
... 더 쉬운 방법이 없을까 하는 생각이 들어요꼭 다 적어야 하는 건가요?
저도 이 문제를 겪었습니다. 예를 들어 a에서 데이터를 전송하는 것입니다.TYPE
조스RST
서 가장 조,장는점를자다에다ee-,e를tnoeei장조det,는에 .With
/EndWith
문 블록.
저는 다음과 같은 것을 생각해냈습니다.
Function AddTypdataToDB(dbs As Database, typData As typAddressInfo)
Dim rst As Recordset
Set rst = dBase.rstOpenRecordset(dbs, "SELECT * FROM Master")
rst.AddNew
With typData
rst.Fields("Amenities") = .strAmenities
rst.Fields("BusinessName") = .strBusinessName
rst.Fields("CountOfBathrooms") = .strCountOfBathrooms
rst.Fields("CountOfBeds") =
rst.Fields("CountOfGuests") =
여기서 저는 지금까지 가장 덜 노력한 메커니즘으로 VBA 프로그램 코드를 작성하는 중입니다.
- 저는 첫 번째 과제("어메니티")를 전부 입력했습니다.
- 나는 그 전말을 아래 행에 복사했습니다, ...
- ...을 .
.strAmnenities
그 다음에... - ... 그 뼈대 선을 여러 번 복사/붙여 붙였습니다.
- Access MDB 테이블 정의에서 필드 이름 복사/AltTab붙여넣기(+ 두 창 사이)
- 마지막으로, 나는 각 연속적인 등호 뒤에 마침표를 입력하고, 내 이름에서 해당 필드 이름으로 스크롤했습니다.
TYPE
구조.
영어로 쓸 때는 복잡하게 들리지만, 수동으로 코드를 생성하는 가장 빠른 오류 없는 방법입니다.을을 .WITH
명시적으로 사용되는 문RST
코드는 있지만 대부분 복사/붙여넣은 것입니다.
경과된 시간을 줄여 내 VBA 코드 블록을 생성할 수 있습니다.AddRecord
프로시저, 하지만 "롱핸드"로 코딩할 때 슬그머니 들어오는 수많은 오류들을 수정할 필요가 없기 때문에 시간을 절약할 수 있습니다.
변수에 할당하는 것이 더 쉬울 수도 있지만, 여기 한 가지 접근법이 있습니다.
With Activeworkbook
'Do Stuff
With .Sheets(1)
'More stuff Done
'...
'But now I need to refer to or pass the Sheet in the last With Statement
SomeFunctionAnswer = SomeFunction Sheets(.name)
End With
'Yet more stuff Done
End With
언급URL : https://stackoverflow.com/questions/41815258/nested-with-statement-hierarchy
'programing' 카테고리의 다른 글
트리거 최적화 (0) | 2023.09.09 |
---|---|
Oracle에 대한 쿼리문 업데이트 (0) | 2023.09.09 |
텍스트 상자에 빈 값이 있는지 확인합니다. (0) | 2023.09.09 |
jQuery UI 대화상자에서 버튼을 비활성화하려면 어떻게 해야 합니까? (0) | 2023.09.09 |
장고 템플릿의 "none"에 해당하는 것은 무엇입니까? (0) | 2023.09.09 |