VBA에서 Sub 와 Function은 서로 비슷해서 혼용해서 사용하기도 하지만 아래와 같은 차이점이 존재합니다. Sub (Routine): 중규모로 주로 공개적, 대외적으로 사용. 주로 리턴값 없음 Alt f8 누르면 목록에 나옴, Private Sub로 쓰면 안나옴 AdressOf 로 Timer API 등에서 호출가능 mySub x로 호출. mySub(x) 호출 불가. Call mySub(x) 가능(byVal) 여러가지 상/하위 Sub 나 Function을 호출 도형이나 버튼에 매크로 지정 가능 빠른실행에 추가 가능 Function: 소규모로 주로 내부적으로 사용. 주로 리턴값 있을 때 많음. 없어도 무방. 이유 없는 소규모 단순 반복작업에 적합. Alt f8 눌렀을 때 함수목록에 나오지 않음...
VBA Tipz 검색 결과
"세 살 버릇 여든까지 간다"라는 속담처럼 초보시절 코딩 습관이 경력직이 될 때까지 이어질 수 있습니다. 사소한 습관 하나가 크나큰 버그를 초래할 수도 있고 작은 습관이 치명적 에러를 피할 수 있게 해줄 수도 있습니다. Alt-F11 코드창에 VBA코드를 작성할 때 주의할 사항 혹은 지키면 좋은 습관 몇가지를 생각나는대로 모아봤습니다. 1. Option Explicit 항상 이거 맨 처음에 써주세요. 안써도 되지만 오타방지해줍니다. Explicit는 '명시적인'이라는 뜻인데 미리 Dim i as Integer 라고 명시적으로 선언하고 쓰겠다는 뜻입니다. 미리 선언하지 않은 변수는 실행시 에러를 출력하기 때문에 오타를 찾아내주고 항상 미리 변수 선언하는 (초보자로서) 좋은 습관을 길러줍니다. 또한 미리 변..
Sub test2() Dim shp As Shape Dim SW As Single, SH As Single Dim i As Integer, j As Integer Dim arr As Variant Dim sld As Slide arr = Array(Array(0, 0, 1, 1, 0, 1, 1, 0, 0), _ Array(0, 1, 0, 0, 1, 0, 0, 1, 0), _ Array(1, 0, 0, 0, 0, 0, 0, 0, 1), _ Array(1, 0, 0, 0, 0, 0, 0, 0, 1), _ Array(1, 0, 0, 0, 0, 0, 0, 0, 1), _ Array(0, 1, 0, 0, 0, 0, 0, 1, 0), _ Array(0, 0, 1, 0, 0, 0, 1, 0, 0), _ Array(0..
파워포인트 관련 VBA는 엑셀에 비해 많이 없는 것이 사실입니다. 저는 책 보다는 다른 사람의 코딩을 따라해보고 수정해보는 것이 좋다고 생각합니다. 뭔가 만들고 싶은 것이 있으면 관련 자료를 인터넷에서 찾아보고 해당 코드를 이용해서 게임이나 작품에 적용하다보면 자연스럽게 실력이 늘게 됩니다. 몇 개 링크를 남겨 놓습니다. ## VBA 강좌 게시판 1.일단 국내에서는 파워포인트 게임마을 VBA게시판에 정보가 제일 많다고 생각합니다. https://cafe.naver.com/gameppt?iframe_url=%2FArticleList.nhn%3Fsearch.clubid%3D16854404%26search.menuid%3D924%26search.page%3D1%26search.boardtype%3DL ..
VBA나 어떤 프로그래밍 언어를 배우고자 하는 분들에게 해주고 싶은 이야기가 있습니다. 바로 누군가로 하여금 배(boat)를 만들게 하고 싶다면 배 만드는 방법을 가르쳐 주지 말고 바다(sea)가 얼마나 멋진가를 가르치라는 이야기입니다. VBA 언어는 글자이기 때문에 딱딱할 수밖에 없습니다. 언어만 배우다 보면 쉽게 지치기 쉽습니다. VBA를 이용해서 만든 화면 결과물이 얼마나 멋진가를 가르쳐줘야 합니다. 손으로 일일이 수작업으로 한땀한땀 작업하던 것들이 버튼 한 번에 순식간에 처리되는 모습을 보여줘야 합니다. 그런면에서 엑셀이나 워드보다 비쥬얼적인 도구인 파워포인트가 적합하고 매력적이라고 생각합니다. VBA를 배우고 싶다면 필요한 것은 약간의 코드로 화면에 뭔가를 만들어 내는 것에 신기함과 재미를 느끼..
자주쓰는 API 중 64비트 호환을 위한 API선언 모음입니다. #If VBA7 Then Public Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, _ ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr Public Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long Public Declare PtrSafe Function sndPlaySoun..
PowerPoint 2010 기준입니다.슬라이드1에서 슬라이드2로 Shape 을 복사하는데 일반 Shape와 마찬가지로 Group인 Shape도 복사 .Copy 붙이기 .Paste는 잘 됩니다만 슬라이드1에서 원래 가지고 있던 그룹개체의 부모 Parent/자식 Child 속성이 사라지는 현상을 알게되었습니다.다른 버전에서도 이런지는 확인을 못했지만 이 현상을 회피하는 방법을 소개하고자 합니다. 일단, 첨부한 CopyGroup.pptm 을 실행해봅시다. 일단 지시하는대로 옵션1과 옵션 2를 클릭해봅시다.옵션1과 옵션2는 동그라미와 텍스트박스가 합쳐진 그룹입니다. 각각 Option1 과 Option2 라는 이름을 부여했고 내부적으로 클릭하면 'ParentGroup'을 이용해 부모그룹의 이름을 검사해서 끝자리..
이 글은 VBA 에서 배열을 사용할 줄 아시는 분을 대상으로 합니다. 첨부한 슬라이드로 설명을 드립니다. 배열 중간에 뭔가 삽입해야할 때가 있습니다. 예를 들어 이렇게 3번 다음에 10번을 넣고 싶다면 어떨까요? Option Base 1dim i as Integerdim myArraydim copyArray()myArray = Array("1번선수","2번선수","3번선수", ...생략...) Redim Preserve myArray(Ubound(MyArray)+1) ' 배열크기를 1 증가시키고for i = Ubound(myArray) to 5 step -1 ' 끝에서부터 삽입위치까지 바로 이전 배열값을 차례로 복사myArray(i) = myArray(i-1)nextmyArray(4) = "10번선수" ..
최근댓글