본문 바로가기

VBA/엑사남_기초방86

[기초방] VBA 100제 #17 [ CHR + ASC ] 이번 구문은 위아래 중복일때 뒤에있는 아스키코드값을 증가시키면서 알파벳을 변화시키는 구문이다. 이 구문이 정렬이 되었다는 가정하에서는 Countif로 뒤에있는 문자를 증가시키면서 해결해 나가면 된다. 하지만 36행을 보면 순서없이 코드하나가 빠져있다. 따라서 이번 문제는 Countif는 답이 아니다. 순차적으로 코드를 진행하면서 이전셀과 비교하면서 만일 같다면 ASC 코드를 증가시키면서 코드를 증가시키면 된다. ElseIf rngX = rngX(0, 1) Then i = i + 1 Str = Left(rngX, Len(rngX) - 1) rngX.Next = Str & Chr(Asc(Right(rngX, 1)) + i) Else Asc(A)는 65를 반환하고 Chr(65 + 1) 은 B 를 반환한다. 전.. 2023. 1. 17.
[기초방] VBA 100제 #16 [ 이벤트 + 빈셀삭제하기 ] 이러한 문제는 임시적으로 배열에 담았다가 출력을 하면 더 쉽게 가능하지만 아직은 배열과정이 아니기에 철저하게 셀기반으로 풀어보려 한다. 크루들이 과제를 풀어가는 것을 보니 일단 이벤트 개념은 확실히 잡고 가는거 같다. 본인이 공부할때는 이벤트가 참 어려웠다. 엑사남님 강의를 제대로 안 들은것도 있었지만 모듈에서 짜던 코드들이 시트를 넘나 드는것을 보면서 많이 힘들었던 기억이 있다. 엑사남님 강의를 정독으로 3번쯤 볼때 '아..이걸 왜 어려워했지' 했을 정도로 강의 자체를 쉽게 쉽게 하셨으니, 지금 잘 이해가 안 가는 분들은 꼭 강의를 정독하길 바란다. 이벤트에서 Target 이라는 것은 쉽게 말해서 selection 이라고 생각하면 된다. 내가 선택한 셀 또는 영역이 target이 된다. 이문제에서 각 .. 2023. 1. 16.
[기초방] VBA 100제 #15 [ 이벤트 + 사용자함수 ] 이벤트와 사용자함수를 이용하여 해당값들을 찾는 구문이다. 열 찾는 구문에서 보통 column 함수를 사용하면 열번호를 반환한다. 그렇기 때문에 CHR 함수를 통해서 숫자를 열의 알파벳으로 변화를 해야한다. 엑셀함수는 CHAR 이고 CHAR(65) = A 와 같다. 아래 코드는 전체 영역을 순환하면서 일치값이 있으면 열 머리값을 반환하는 코드이다. For Each rngA In rngAll If rngA.Value = X Then Haja_find = Chr(64 + rngA.Column) Exit Function End If Haja_find = "일치없음" Next rngA 나머지 이벤트 코드는 초기화 한 후 일치값에 색상을 입히는 단순한 코드이다. 오늘도 화이팅한 당신께 박수를 보낸다. 더보기 Opt.. 2023. 1. 15.
[기초방] VBA 100제 #14 [ 이벤트 필터링하기 ] 엑사남님 강의중 9강부터 14강에 이벤트에 관한 강의가 올라와 있다. 이 이 강좌들을 보면 이벤트에 대한 감이 좀 잡히게 될 것이다. 매크로와 이벤트의 차이는 매크로는 전체적인 프로시저를 제어한다면 / 이벤트 프로시저는 해당하는 영역에 관해서 발생한다. 매크로는 모듈에서 작성되나, 이벤트는 Sheet에서 작성을 한다. 이번 구문에서 활용한것은 이벤트가 발생하였을 때 이벤트 영역을 설정한 후 매크로를 호출하는 형태로 진행하였다. 더블 클릭이벤트와 우클릭 이벤트는 맨 하단에 Cancel = true 이 구문을 꼭 넣어서 사용해야 매크로 이후에 더블클릭과 우클릭 고유의 명령이 실행되지 않는다. 이벤트가 진행될 때는 자칫하면 이벤트가 무한 반복되어 무한루프상태로 빠질 수 있기 때문에 Application.Ena.. 2023. 1. 15.