programing

문 계층 구조와 중첩됨

bestprogram 2023. 9. 9. 09:45

문 계층 구조와 중첩됨

최근에 이런 일을 몇 번 접했는데 더 쉬운 방법이 없을까 해서...

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 프로그램 코드를 작성하는 중입니다.

  1. 저는 첫 번째 과제("어메니티")를 전부 입력했습니다.
  2. 나는 그 전말을 아래 행에 복사했습니다, ...
  3. ...을 ..strAmnenities그 다음에...
  4. ... 그 뼈대 선을 여러 번 복사/붙여 붙였습니다.
  5. Access MDB 테이블 정의에서 필드 이름 복사/AltTab붙여넣기(+ 두 창 사이)
  6. 마지막으로, 나는 각 연속적인 등호 뒤에 마침표를 입력하고, 내 이름에서 해당 필드 이름으로 스크롤했습니다.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