[VBA] 셀값을 참조해서 범위 찾기
VBA
작성자
가람
작성일
2021-12-07 11:37
조회
2369
단어 관련 암기를 돕기위해서 사용하고 있던 코드인데요. 이번에는 "전범위"시트의 "F1"값을 참고해서 "H:K"열에 있는 "F1"값의 옆에 있는 범위 ex) F1= 1-5 일때 범위 "1-150"을 참조해서 만드는 코드를 만들고 싶습니다. 그러면 F1값만 변경해주고 버튼을 누르면 자동으로 내용이 단어 내용이 변경될 수 있게요! 솔직히 혼자 해보려고 했는데, 계속 안되서 도움 요청합니다. 보라색 부분을 변경하면 될것 같았는데 아닌가요? ㅠㅠ --------------------------------------------------------------------------------------------------------- Option Explicit Dim 자료 As Range Sub 버튼_문제출제_클릭() Dim 번호 As Range Dim strSec As String Dim fNum As Long Dim arrSec As Variant Dim myNum As Variant Dim cnt As Long Dim n As Long Dim rndNum() As Variant Dim myData() As Variant Set 자료 = Sheets("DATA").[A1].CurrentRegion Set 번호 = Sheets("TEST").[A1].CurrentRegion Set 번호 = 번호.Offset(2, 1).Resize(번호.Rows.Count - 2, 1) '---------------------------------- ' 초기화 - 랜덤, 기존자료, 머릿글 '---------------------------------- 번호.Resize(, 2) = Empty ' 기존자료 삭제 With Range("b2") ' 머릿글 설정 If n = 1 Then .Resize(, 2) = Array("해석", "원문") Else .Resize(, 2) = Array("원문", "해석") End If End With '---------------------------------- ' 랜덤 번호 가져오기 '---------------------------------- cnt = 번호.Rows.Count ReDim rndNum(1 To cnt) ReDim myData(1 To cnt, 1 To 2) <span style="color: #800080;"> On Error GoTo Error_Handler strSec = InputBox("시작번호와 종료번호를 입력" & vbCr & vbCr & _ "ex) 12-" & 12 + cnt - 1, "시작 번호") If strSec = "" Then Exit Sub arrSec = Split(strSec, "-") If UBound(arrSec) <> 1 Then GoTo Error_Handler arrSec(0) = Val(Trim(arrSec(0))) arrSec(1) = Val(Trim(arrSec(1))) If arrSec(1) - arrSec(0) + 1 < cnt Or arrSec(1) > 자료.Rows.Count Then MsgBox "구간 입력이 잘못되었습니다.", 64, "입력 오류" Exit Sub</span> End If Call mkRandom(cnt, arrSec, rndNum) If Sheets("TEST").Shapes("옵션_해석").ControlFormat.Value = 1 Then For n = 1 To cnt myData(n, 1) = 자료(rndNum(n), 2).Value Next n 번호.Value = myData Else For n = 1 To cnt myData(n, 1) = 자료(rndNum(n), 2).Value myData(n, 2) = 자료(rndNum(n), 3).Value Next n 번호.Resize(, 2).Value = myData End If '---------------------------------- ' 변수 메모리 초기화 '---------------------------------- Set 자료 = Nothing Exit Sub Error_Handler: MsgBox Err.Description End Sub Sub mkRandom(ByVal Cont As Long, ByVal mySec As Variant, ByRef rndNum As Variant) Dim n As Long Dim dpl As Boolean Dim ni As Long Randomize For ni = 1 To Cont dpl = False Do Until dpl = True rndNum(ni) = Int(Rnd() * (mySec(1) - mySec(0) + 1) + mySec(0)) dpl = True For n = 1 To ni - 1 If rndNum(n) = rndNum(ni) Then dpl = False Next Loop Next End Sub
------------------------------------------------------------------------------------------------------------------
전체 18,532
번호 | 카테고리 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (315)
![]() ![]() |
![]() ![]() |
2022.02.03 | 575 | 609825 | ||
공지사항 | 문서서식 |
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐
(197)
오빠두엑셀
|
2021.10.28
|
추천 310
|
조회 35557
|
![]() ![]() |
2021.10.28 | 310 | 35557 |
78582 | 함수/공식 |
New 조건 함수 의 관한 문의
![]() ![]() ![]() |
![]() |
2025.05.13 | - | 56 |
78580 |
New 날짜와 시간 분할 방법 알려 주세요
![]() ![]() ![]() |
![]() |
2025.05.13 | - | 45 | |
78575 | VBA |
New 엑셀 재고관리 프로그램 문의드립니다..
![]() ![]() |
![]() |
2025.05.13 | - | 80 |
78570 | 대시보드 |
New 대시보드에 표 형식으로 표현도 가능한가요?
![]() ![]() |
![]() |
2025.05.12 | - | 83 |
78569 | 함수/공식 |
New 서로 다른 양식의 견적서 엑셀 파일 한곳에 정리 하기
(5)
![]() |
![]() |
2025.05.12 | - | 107 |
78565 | 함수/공식 |
New 검색보고서 만들기 질문드립니다.
![]() ![]() |
![]() |
2025.05.12 | - | 92 |
78563 | VBA |
New VBA 수정 부탁드립니다. ㅠ
(3)
![]() |
![]() |
2025.05.12 | - | 82 |
78560 | 함수/공식 |
New 어떻게 내용을 가져올수 있을지 고수님들의 해결방법들을 공유 받고 싶습니다!!....
![]() ![]() ![]() |
![]() |
2025.05.12 | - | 49 |
78559 | 파워쿼리/피벗 |
New 엑셀 자동화 질문 입니다...
![]() ![]() |
![]() |
2025.05.12 | - | 69 |
78555 | 함수/공식 |
New 시트에서 원하는 열의 자료만 가져오고싶은데 아무리 해도 수식오류가 나서 도움을 구하고자 합니다
![]() ![]() |
![]() |
2025.05.12 | - | 46 |
78554 | 함수/공식 |
New 변동하는 절대참조값 적용
(6)
답변완료
![]() |
![]() |
2025.05.12 | - | 70 |
78553 | 대시보드 |
New 대시보드_슬라이서 자동으로 눌러지게 하는방법
![]() ![]() |
![]() |
2025.05.12 | - | 52 |
78548 | 대시보드 |
New 어떤 엑셀을 적용해야하는 지 문의드립니다!
(1)
![]() |
![]() |
2025.05.11 | - | 70 |
78546 | 함수/공식 |
New 월별 매출액 자동입력할 수 있는 방법 또는 함수 궁금합니다!
![]() ![]() |
![]() |
2025.05.11 | - | 89 |
78544 | 함수/공식 |
New 중복값 제거 함수에 관하여
![]() ![]() ![]() |
![]() |
2025.05.11 | - | 79 |
78543 | 함수/공식 |
New 데이터 추출 및 정렬관련 초보질문
![]() ![]() ![]() |
![]() |
2025.05.11 | - | 76 |
78540 | 함수/공식 |
New 오빠두LIVE 219회 - 엑셀 '셀 병합' 자동화 보고서 만들기 오빠두엑셀님의 방법이 궁금합니다.
![]() ![]() |
![]() |
2025.05.10 | - | 64 |
78536 | 함수/공식 |
New 월별로 금액적용후 최종월에 차액을 가감 함수가 필요해요
![]() ![]() |
![]() |
2025.05.10 | - | 67 |
78535 | 기능/도구 |
New 엑셀로 25x25 인쇄가 가능한가요?
(1)
![]() |
![]() |
2025.05.10 | - | 52 |
78534 | 파워쿼리/피벗 |
New 쿼리에 함수 적용한 열 추가 시 24:00:00 활용한 계산 함수 필요할 때.
![]() ![]() |
![]() |
2025.05.10 | - | 67 |
78531 | 차트/그래프 |
New 엑셀 차트 데이터테이블
![]() ![]() ![]() |
![]() |
2025.05.09 | - | 76 |
78530 | 구글시트 |
New 구글 스프레드시트 함수 관련 질문입니다.
![]() ![]() ![]() |
![]() |
2025.05.09 | - | 68 |
78528 | 구글시트 |
New 구글 스프레드시트를 외부 엑셀 파일과 연동하는 방법이 궁금합니다.
(3)
![]() |
![]() |
2025.05.09 | - | 72 |
78525 | 문서서식 |
New 업무가 진행이 안 될 정도로, 해당 파일이 느립니다!
![]() ![]() |
![]() |
2025.05.09 | - | 96 |
78520 | 기능/도구 |
New 하이퍼링크 명칭 해제
(1)
![]() |
![]() |
2025.05.09 | - | 54 |
78518 | 피벗테이블 |
New 피벗테이블 관련 화살표 질문
![]() ![]() |
![]() |
2025.05.09 | - | 50 |
78516 | 함수/공식 |
New 호봉산정 엑셀 문의드립니다.
![]() ![]() ![]() |
![]() |
2025.05.08 | - | 61 |
78515 | 함수/공식 |
New 엑셀 질문 드립니다.ㅠ.ㅠ
![]() ![]() |
![]() |
2025.05.08 | - | 57 |
78511 | 함수/공식 |
New 입사일자로 부터 매년 알림
(2)
![]() |
![]() |
2025.05.08 | - | 72 |
78510 | 문서서식 |
New 조건부 서식 적용 문의
![]() ![]() ![]() |
![]() |
2025.05.08 | - | 102 |
@가람 님 구현하고 싶은 것이
문제번호를 입력하는 방식에서
구간으로 입력하기를 원하는 건가요?
현재 I, K 컬럼의 값을 입력하는 것을
이에 대응하는 H,J 컬럼 값으로 입력하기를 원하는 것인가요?
- 입력받은 번호 범위를 DATA 시트의 A컬럼으로 가져오는
로직인듯 한데,
- 위와 같이 하려면
arrSec(0) = Val(Trim(arrSec(0)))
arrSec(1) = Val(Trim(arrSec(1)))
각 번호는 30개로 대응되므로
위 구문 아래에 아래 코드를 삽입하면 될 듯 싶습니다.
arrSec(0) = (arrSec(0)-1)*30 +1
arrSec(1) = (arrSec(1)-0)*30 + 0 '// 리듬 감을 주기 위해, -0, +0 사용
@야휘 님 답변 감사합니다.
제가 올려드린 코드를 구동하면 범위를 입력하는 메세지박스가 뜨는데, 그부분을 자동으로 할수있게 줄이고 싶었던 거라서요.
지금은 단어를