|
|
|
| |
|
|
| |
현제 엑셀 VBA를 이용한 에플리케이션을 만들고 있습니다.
정형화 되어 있지 않은 순서의 값들(즉 연속적인 표형태에 들어가는 값이 아닌 즉 for루프를 쓸수 없는 상황)을 시트네에 여러 셀에 뿌려주어야 합니다.
그리고 그 값들은 구조체에 들어 있습니다.
그런데 셀 범위를 선택해서 셀에 값을 넣어주는 속도가 너무 느립니다.
제 나름대로 실험해 본 결과
1. ActiveSheet.Range("절대좌표").Value = pjtbean.name
--> 극악으로 느리다
2. ActiveSheet.Range("절대좌표").Select
ActiveSheet.Offset("상대 좌표").Value = pjtbean.name
--> 1번보다 조금 빨라짐 하지만 그래도 느림
3. Sheets("시트네임").Cells("절대좌표").Value = pjtbean.name
--> 2.번과 별차이 없음
4. 각 객체에서 직접 값을 뽑아 내는 것과 이를 다른 타입(Integer String...)에 잠시 저장한후 출력하는 것과 별차이 없음
위 처럼 나왔습니다. 값들을 셀에 표시하기 위해 가장 속도가 나는 방법좀 추천해 주십시요
부탁드립니다.
==============[하하님 글에 대한 답변입니다]==============
안녕하세요?
일부 경험과 주변에서 주어 들은 말들을 모아 보았습니다.(그러니까 50%도 정답을 보장하지 못한다는 얘기지요^^;)
1. 꼭 필요한 경우가 아니면 'Select'를 사용하지 마십시요
2. 되도록이면 Application.ScreenUpdating = False 를 사용하여 '스크린 업데이트'를 보지 않도록 하십시요
3. 계속해서 다른시트의 자료를 참조하거나 입력할 때는 'worksheet'를 객체에 'Set"하거나 이름정의를 사용해 보십시요.
Sheets("자료").Range("A1") 보다는
Set Sht=WorkSheets("자료") -> Sht.Range("A1") 하거나
Sheets("자료").Range("A1").Name = "TarR" -> Range("TarR").Offset(10, 5)
4. 연속된 일정범위(여러셀)를 입력할 때는 가능하다면 'Variant"변수를 이용해 한꺼번에 입력해 보십시요
다음은 '자료'시트의 'A2:A6'범위의 자료를 '입력'(ActiveSheet로 가정)시트의 'F5:F9'에 한꺼번에 입력하는 방법입니다.
Dim Sht As WorkSheet
Dim VarA As Valiant
Set Sht = WorkSheets("자료")
VarA = Sht.Range("A2:A6")
ActiveSheet.Range("F5:F9") = VarA '여기서 ActiveSheet는 생략가능
5. 반복적으로 사용되는 개체(Object)는 With... End With문을 사용하십시요.
그럼 즐거운 추석이... |
|
|
[불량 게시물 신고] |
|
|
|
|
작성일 : 2003-09-09(16:21)
최종수정일 : 2003-09-10(13:11) |
| |
|
 |
|