엑셀 VBA 기본강의 23강 - Userform 으로 데이터 입력받고 조회 (수정 삭제도? ㅎㅎㅎ)

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ม.ค. 2025

ความคิดเห็น • 82

  • @jinheo1691
    @jinheo1691 ปีที่แล้ว +2

    미래에서 온 수강생입니다. 오늘도 유익한 강의 감사합니다 ㅎㅎ
    오래전 강의 영상이라 댓글을 보실진 모르겠지만 엑사남님 강의만 듣고 실무에서 많은 응용을 하고 효율적인 매크로를 많이 만들고있습니다.
    항상 감사합니다 (_ _ 꾸벅. 숙제 올리고갑니다!
    '수정
    Private Sub CommandButton2_Click()
    Range("A1") = Me.TextBox1
    Range("E" & Range("A2")) = Me.ComboBox1
    Range("F" & Range("A2")) = Me.TextBox2

    End Sub
    '삭제
    Private Sub CommandButton3_Click()
    Range("A1") = Me.TextBox1
    Range("C" & Range("A2")).Resize(1, 4).Delete

    End Sub

  • @ipccp8440
    @ipccp8440 3 ปีที่แล้ว +2

    안녕하세요 엑사남 덕분에 유용한 강의 너무 잘듣고있어 감사드립니다
    단 한가지 부탁드릴게 있다면 강의 처음 또는 중간부 치직~ 치직~ 하는 화면전환 할때 소리를 작게 하거나 없애주실수 있을까요?
    일단 소리 자체가 듣기싫은건 둘째치고
    크기가 커서 강의 중간에 화들짝 놀라고 귀가 아픕니다.
    위 요청사항 참고해주시면 감사드리겠습니다!

  • @돌굴러가유-z4j
    @돌굴러가유-z4j 14 วันที่ผ่านมา

    어느덧 25년 1월 이네요. 새해 복 많이 받으세요~

  • @Jisu88
    @Jisu88 4 ปีที่แล้ว +1

    오늘도 재밌는 강의 잘 배워갑니다~
    다만 하나만 부탁드리자면, 중간에 엑사남 글자 나오면서 지지직하는 소리가 강의에 비해서 넘 크다보니 이어폰으로 듣다가 귀아프고 놀랍니다. ㅠ 듣기 좋은 소리도 아닌데 크기까지 하니까 강의의 흐름을 끊습니다. 이거만 수정해주신다면 더 엑사남님 강의를 듣기 좋을거 같습니다 ^^

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      네 감사합니다
      이미 올라간 강의는 수정하려 해보았지만 ㅜㅜ
      안되더라고요
      최근 강의들은 모두 작게 수정하였습니다
      편집이 서툴러서 불편드려 죄송합니다
      앞으로는 더욱 신경쓸께요

  • @호새벽
    @호새벽 5 หลายเดือนก่อน +1

    안녕하세요. 여기서 진짜 필요한부분이 데이터 입력, 조회 그다음에 조회된 내용을 입력하기 버튼 누르면 자동으로 시트에 내용이 입력되게 하는 방법이 진짜 필요한데.. vba 교재까지 구매해서 몇번을 시도해봤는데.. 워낙 기초가 없다보니깐 조금만 상황이 달라져도.. 에러 나오고 방법을 모르겠습니다 ㅜㅜ .. 지금 만들고있는게 장비수리요청서 이런거 인데.. 어렵네요 ㅜㅜ

    • @excelloveman-3399
      @excelloveman-3399  5 หลายเดือนก่อน +1

      안녕하세요 엑사남입니다^^
      강의 관련 질문은 아래 주소의
      오픈채팅방 이용 부탁드립니다.
      파일이나 캡쳐본으로 서로 전달해야
      빠른 답변이 가능합니다.
      제 강의를 듣는 구독자 분들이
      VBA 학습을 위해 만든 방입니다.
      입장 후 인사와 공지 준수는 필수 입니다^^
      학습 하시는데 많은 도움이 되실거에요.
      유튜브 '엑사남'의 Excel VBA 함께하기
      open.kakao.com/o/glXWEB3b

    • @호새벽
      @호새벽 5 หลายเดือนก่อน

      @@excelloveman-3399 안녕하세요.
      그 오픈채팅방이 패스워드가 있어서요 ㅜㅜ
      패스워드 알수있을까요?

    • @호새벽
      @호새벽 5 หลายเดือนก่อน

      @@excelloveman-3399 감사합니다.
      오픈채팅방 입장하여 가입인사 드렸습니다.

  • @great_mase
    @great_mase 4 ปีที่แล้ว +4

    과제 제출합니다!
    많이 헷갈렸는데 반복하니 쉬워졌네요!
    많이 감사합니다!
    !!수정시
    Private Sub CommandButton2_Click()
    Range("e" & Range("a2")) = Me.ComboBox1
    Range("f" & Range("a2")) = Val(Me.TextBox3)
    End Sub
    !!삭제시
    Private Sub CommandButton3_Click()
    Range("c" & Range("a2")).Resize(1, 4).Delete
    End Sub
    !!남녀 콤보박스 입력
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

  • @나야나-u7t
    @나야나-u7t 3 ปีที่แล้ว +1

    설명이 아주 좋아요 구독

  • @둥근세모-o8h
    @둥근세모-o8h 8 หลายเดือนก่อน

    항상 감사합니다!
    추천해주신 엑셀 함수를 함께 이용한 방법을 시도해 본 후,
    순수 VBA로 진행을 해보았습니다
    말씀해주신대로 엑셀 함수를 함께 활용하면 더 간편해져서 좋았습니다 ^^
    -------------------------------------------------------------------------------------------------------------------
    Private Sub CommandButton1_Click()
    Dim R As Long ''끝행
    R = Cells(Rows.Count, "C").End(xlUp).Row + 1
    If WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) > 0 Then
    MsgBox "중복값이 있습니다. 확인해주세요"
    Exit Sub
    End If
    Range("C" & R) = R - 2
    Range("D" & R) = Me.TextBox1
    Range("E" & R) = Me.ComboBox1
    Range("F" & R) = Me.TextBox2
    Range("C1:F1").Copy
    Range("C" & R).PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
    Range("C2").Select
    End Sub
    Private Sub CommandButton2_Click() '' 조회
    Dim lngR As Long '' 끝행
    Dim lngA As Long '' 순환
    lngR = Cells(Rows.Count, "C").End(xlUp).Row
    For lngA = 3 To lngR Step 1
    If Range("D" & lngA) = Me.TextBox1 Then
    If WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) = 1 Then
    Me.ComboBox1 = Range("E" & lngA)
    Me.TextBox2 = Range("F" & lngA)
    ElseIf WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) 1 Then
    MsgBox "중복 데이터가 입력되었습니다"
    Exit Sub
    End If
    End If

    Next lngA
    End Sub
    Private Sub CommandButton3_Click() '' 수정
    Dim lngR As Long '' 끝행
    Dim lngA As Long '' 순환
    lngR = Cells(Rows.Count, "C").End(xlUp).Row
    For lngA = 3 To lngR Step 1
    If Range("D" & lngA) = Me.TextBox1 Then
    If WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) = 1 Then
    Range("E" & lngA) = Me.ComboBox1
    Range("F" & lngA) = Me.TextBox2
    ElseIf WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) 1 Then
    MsgBox "중복 데이터가 입력되었습니다"
    Exit Sub
    End If
    End If

    Next lngA
    End Sub
    Private Sub CommandButton4_Click() ''삭제
    Dim lngR As Long '' 끝행
    Dim lngA As Long '' 순환
    lngR = Cells(Rows.Count, "C").End(xlUp).Row
    For lngA = 3 To lngR Step 1
    If Range("D" & lngA) = Me.TextBox1 Then
    If WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) = 1 Then
    Range("D" & lngA).EntireRow.Delete
    ElseIf WorksheetFunction.CountIf(Range("D:D"), Me.TextBox1) 1 Then
    MsgBox "중복 데이터가 입력되었습니다"
    Exit Sub
    End If
    End If

    Next lngA
    End Sub
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

  • @piro9926
    @piro9926 3 ปีที่แล้ว +1

    오... 이번건 재밌네요
    잘 마무리 했습니다.
    다만, 코드를 한번 훑어본 뒤 응용해서 만들었기 때문에
    복습이 꼭 필요할 것 같습니다
    오늘도 강의 감사합니다
    Private Sub CommandButton1_Click()
    Dim lngA As Long
    lngA = Range("C10000").End(xlUp).Row
    Range("D" & lngA).Offset(1, 0) = Me.TextBox1
    Range("E" & lngA).Offset(1, 0) = Me.ComboBox1
    Range("F" & lngA).Offset(1, 0) = Me.TextBox2
    Range("C2").Copy
    Range("C" & lngA).Offset(1, 0).PasteSpecial
    Range("D2:F2").Copy
    Range("D" & lngA).Offset(1, 0).PasteSpecial xlPasteFormats
    Range("C" & lngA).Offset(1, 0).Select
    Application.CutCopyMode = False
    End Sub
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub
    ㅡㅡㅡㅡ
    Private Sub CommandButton1_Click()
    Unload UserForm4
    End Sub
    Private Sub CommandButton2_Click()
    Dim lngA As Long
    lngA = Range("A2")
    Range("E" & lngA) = Me.ComboBox1
    Range("F" & lngA) = Me.TextBox2
    End Sub
    Private Sub CommandButton3_Click()
    Range("A1") = Me.TextBox1
    Me.TextBox2 = Range("A4")
    Me.ComboBox1 = Range("A3")
    End Sub
    Private Sub CommandButton4_Click()
    Range("C" & Range("A2")).Resize(1, 4).Delete
    End Sub
    Private Sub CommandButton5_Click()
    Dim lngB As Long
    lngB = Range("C10000").End(xlUp).Row
    Range("D" & lngB).Offset(1, 0) = Me.TextBox1
    Range("E" & lngB).Offset(1, 0) = Me.ComboBox1
    Range("F" & lngB).Offset(1, 0) = Me.TextBox2
    Range("K3").Copy
    Range("C" & lngB).Offset(1, 0).PasteSpecial
    Range("L3:N3").Copy
    Range("D" & lngB).Offset(1, 0).PasteSpecial xlPasteFormats
    End Sub
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

  • @standstrong9124
    @standstrong9124 3 ปีที่แล้ว +1

    좋은 강의 감사합니다
    맥북 엑셀에서는 유저폼을 어떻게 불러오나요?
    혹은 명령어만으로도 유저폼을 만들 수 있는지 궁금합니다

    • @excelloveman-3399
      @excelloveman-3399  3 ปีที่แล้ว

      네 가능합니다

    • @standstrong9124
      @standstrong9124 3 ปีที่แล้ว +1

      @@excelloveman-3399 답변 감사합니다^^
      여러번 시도해보고 또 궁금한 점 있으면 또 연락드리겠습니다

    • @excelloveman-3399
      @excelloveman-3399  3 ปีที่แล้ว

      @@standstrong9124 안녕하세요
      강의 관련 질문은 아래 주소의
      오픈채팅방 이용 부탁드립니다.
      파일이나 캡쳐본으로 서로 전달해야
      빠른 풀이 및 이해가 가능합니드
      제 강의를 듣는 구독자 분들이
      VBA 학습을 위해 만든 방입니다.
      입장 후 인사와 공지 준수는 필수 입니다^^
      학습 하시는데 많은 도움이 되실거에요.
      브 '엑사남'의 Excel VBA 함께하기
      open.kakao.com/o/glXWEB3b

    • @standstrong9124
      @standstrong9124 3 ปีที่แล้ว

      @@excelloveman-3399 네 감사합니다^^

  • @ldk0721
    @ldk0721 3 ปีที่แล้ว +1

    강의 감사합니다. 좋아요~ 꾹~ 찾으려고 하는 이름이 없는 경우 예외처리하는 방법을 찾아보다가 알려주신 On Error Resume Next를 썼어요.
    Private Sub CommandButton1_Click() '조회버튼 클릭 시 기능

    On Error Resume Next '찾고자 하는 이름이 없을 경우 오류 무시

    Range("A1") = Me.TextBox1 '조회하려는 이름 입력값 받음
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")

    On Error GoTo 0

    End Sub
    Private Sub CommandButton2_Click() '수정 버튼 누를 경우 프로시저
    Dim lng_row As Long

    lng_row = Range("A2") '조회한 값이 나온 행을 입력받을 변수
    Range("D" & lng_row) = Me.TextBox1 '이름칸에 값 입력
    Range("E" & lng_row) = Me.ComboBox1 '성별칸에 값 입력
    Range("F" & lng_row) = Me.TextBox3 '나이칸에 값 입력
    End Sub
    Private Sub CommandButton3_Click() '삭제버튼 누를경우 프로시저
    Dim lng_row As Long '삭제할 행 입력받을 변수
    Dim lng_colmun As Long '전체 행수를 입력받을 변수

    On Error Resume Next '삭제할 이름이 없을 경우 오류 무시

    lng_row = Range("A2") '조회한 값이 나온 행을 입력받을 변수
    lng_colmun = Range("D65536").End(xlUp).Row '3행부터 입력해라

    Range("D" & lng_row).EntireRow.Delete

    On Error GoTo 0
    End Sub
    Private Sub UserForm_Initialize() '성별 리스트 초기화
    Me.ComboBox1.List = Array("남", "여")

    End Sub

  • @정준현-w2v
    @정준현-w2v 4 ปีที่แล้ว +1

    오.... 재밌어요...ㅎㅎㅎ

  • @이준환-p8q
    @이준환-p8q 4 ปีที่แล้ว +1

    안녕하세요~~ 오늘도 알찬강의 재밌게 봤습니다~~~
    한가지 궁금한게 있다면 유저폼에 사용된 변수를 시트에서도( Dim lngR As Long ) 변수로 지정하셨던데,
    시트에 있는 변수를 지워도 작동하는데는 크게 문제가 없었는데 따로 지정한 이유가 있나요???
    Private Sub CommandButton1_Click()
    Range("A1") = Me.TextBox1
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")
    End Sub
    Private Sub CommandButton2_Click()
    Range("f" & Range("a2")) = Me.ComboBox1
    Range("G" & Range("a2")) = Val(Me.TextBox3)

    End Sub
    Private Sub CommandButton3_Click()
    Range("C" & Range("a2")).Resize(1, 4).Delete
    End Sub
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว +1

      강의가 많아서 확인이 쉽지 않네요 ㅜㅜ
      안녕하세요
      강의 관련 질문은 아래 주소의
      오픈채팅방 이용 부탁드립니다.
      파일이나 캡쳐본으로 서로 전달해야
      빠른 풀이 및 이해가 가능합니드
      제 강의를 듣는 구독자 분들이
      VBA 학습을 위해 만든 방입니다.
      입장 후 인사와 공지 준수는 필수 입니다^^
      학습 하시는데 많은 도움이 되실거에요.
      유튜브 '엑사남'의 Excel VBA 함께하기
      open.kakao.com/o/glXWEB3b

  • @benben-kh6in
    @benben-kh6in 3 ปีที่แล้ว +2

    이번 강의도 잘들었습니다. 이름을 만약 수정했을 경우에 오류가 발생하기에 이름이 수정되었을 경우 반영하는 구문을 넣었습니다.
    Private Sub CommandButton2_Click()

    Range("A1") = Me.TextBox1 '이름이 수정되었을 경우 오류발생 방지

    Range("D" & Range("a2")) = Me.TextBox1
    Range("E" & Range("a2")) = Me.ComboBox1
    Range("F" & Range("a2")) = Val(Me.TextBox3)

    End Sub
    Private Sub CommandButton3_Click()
    Range("C" & Range("a2")).Resize(1, 4).Delete

    End Sub
    이번 강의의 핵심은 시트와 엑셀의 활용을 같이해야 실무에서 활용도가 높아진다는 점인것같습니다.
    좋은 강의 감사합니다

  • @0_0hyunni
    @0_0hyunni 3 ปีที่แล้ว +2

    이번 강의도 재밌게 배웠습니다. 감사합니다!
    Private Sub CommandButton2_Click()
    Range("E" & Range("A2")) = Me.ComboBox1
    Range("F" & Range("A2")) = Me.TextBox3
    End Sub
    Private Sub CommandButton3_Click()
    Range("C" & Range("A2")).Resize(1, 4).Delete
    End Sub
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

  • @빅데이타-l4s
    @빅데이타-l4s 4 ปีที่แล้ว +1

    하나의 폼에서 모든 걸 하고싶은 욕심에 .... 그리고 스핀버튼으로 자료이동하는 기능도 넣어 봤어요.
    만족스럽진 않지만 그럭저럭 ....
    '하나의 폼에서 등록,수정,삭제,조회 모두 관리
    '폼에 스핀버튼컨트롤 추가하여 자료를 하나씩 이동하며 조회가능.(이름 입혁후 조회버튼 클릭해도 조회됨.)
    Option Explicit
    Public i As Long 'data 행번호(수정,삭제시 필요함)
    Public lngR As Long '마지막행(등록시 필요)
    Private Sub UserForm_Initialize() '초기화 서브루틴
    i = 2 '데이타 행번호 초기화
    Me.CommandButton2.Enabled = False '조회후 수정가능
    Me.CommandButton3.Enabled = False '조회후 삭제 가능
    Me.ComboBox1.Clear
    Me.TextBox2 = ""
    Me.ComboBox1.List = Array("남", "여") '일괄추가 :Array, 1개씩추가:Additem, 데이타원본:Rowsource
    Me.TextBox1.SetFocus
    SpinButton1 = i ' 스핀버튼과 행번호 일치시킴

    End Sub
    Private Sub CommandButton4_Click() '등록
    Dim j As Long '등록시 동일인 중복 검색용

    j = 0
    lngR = Range("D" & Rows.Count).End(xlUp).Row + 1 '마지막행

    '동일이름확인
    If Me.TextBox1 = "" Then
    MsgBox "성명을 입력하세요.": Me.TextBox1.SetFocus: Exit Sub
    Else
    On Error Resume Next
    j = WorksheetFunction.Match(Me.TextBox1, Range("D:D"), 0) '동일성명 자료 확인
    On Error GoTo 0
    End If

    If Me.ComboBox1 = "" Then
    MsgBox "성별을 선택하세요.": Me.ComboBox1.SetFocus
    ElseIf Me.TextBox2 = "" Then
    MsgBox "나이를 입력하세요.": Me.TextBox2.SetFocus
    ElseIf j = 0 Then '미등록 이름
    If MsgBox("등록하시겠어요?", vbYesNo) = vbYes Then
    Call reg_rtn '등록루틴
    End If
    ElseIf j 0 Then '기등록동일이름 존재
    If MsgBox("같은 이름이 존재합니다. 그래도 등록하시겠어요?", vbYesNo) = vbYes Then '동명이인 등록
    Call reg_rtn '등록루틴
    End If

    End If
    Me.TextBox1.SetFocus

    End Sub
    Sub reg_rtn() '등록루틴
    Range("C" & lngR) = "=row()-2" '데이타 번호
    Range("D" & lngR) = Me.TextBox1 '성명
    Range("E" & lngR) = Me.ComboBox1 '성별
    Range("F" & lngR) = Val(Me.TextBox2) '나이

    With Range("C" & lngR).Resize(1, 4)
    .Borders.LineStyle = 1 '테두리
    .HorizontalAlignment = xlCenter '가운데정렬
    End With

    Application.CutCopyMode = False '카피모드 해제

    i = lngR '등록자료를 현재 데이타로 조회
    Me.SpinButton1 = i '스핀버튼과 일치

    MsgBox Me.TextBox1 & "님의 자료가 등록되었습니다."

    End Sub
    Private Sub CommandButton1_Click() '조회
    '자료 초기화
    i = 0 '데이타 행번호 초기화
    Me.ComboBox1 = ""
    Me.TextBox2 = ""

    On Error Resume Next
    i = WorksheetFunction.Match(Me.TextBox1, Range("D:D"), 0) '조회할 자료의 행번호
    On Error GoTo 0

    If i = 0 Then
    MsgBox "조회할 자료가 없습니다."
    Call UserForm_Initialize '폼 초기화
    Else
    Call dsp_rtn '자료_display
    Me.SpinButton1 = i '스핀버튼과 일치
    End If

    End Sub
    Private Sub CommandButton2_Click() '수정
    If Me.TextBox1 = "" Then
    MsgBox "성명을 입력하세요.": Me.TextBox1.SetFocus
    ElseIf Me.TextBox2 = "" Then
    MsgBox "나이를 입력하세요.": Me.TextBox2.SetFocus
    ElseIf MsgBox("정말로 수정하시겠어요?", vbYesNo) = vbYes Then '수정

    Range("D" & i) = Me.TextBox1 '성명
    Range("E" & i) = Me.ComboBox1 '성별
    Range("F" & i) = Val(Me.TextBox2) '나이

    With Range("C" & i).Resize(1, 4)
    .Borders.LineStyle = 1 '테두리
    .HorizontalAlignment = xlCenter '가운데정렬
    End With

    Me.TextBox1.SetFocus
    MsgBox Me.TextBox1 & "님의 자료가 수정되었습니다."
    End If

    End Sub
    Private Sub CommandButton3_Click() '삭제
    If MsgBox("정말로 삭제하시겠어요?", vbYesNo) = vbYes Then

    Range("D" & i).EntireRow.Delete
    MsgBox Me.TextBox1 & "님의 자료가 삭제되었습니다."

    Me.TextBox1 = ""
    Call UserForm_Initialize '폼 초기화

    End If

    End Sub
    Private Sub SpinButton1_Change() '스핀버튼으로 자료이동
    Me.Label4.Caption = SpinButton1 - 2 '행번호
    End Sub
    Private Sub SpinButton1_SpinDown() '이전자료 조회
    If (i - 1)

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      유후~~~!
      이정도면 당신은 개발자!!!

    • @빅데이타-l4s
      @빅데이타-l4s 4 ปีที่แล้ว

      @@excelloveman-3399 감사합니다!!!!

  • @이정훈-e3f7l
    @이정훈-e3f7l 4 ปีที่แล้ว

    내용 감사합니다...

  • @Byeongjun1
    @Byeongjun1 4 ปีที่แล้ว +1

    넘나 오랜만에 강의를 듣고 과제를 하네요.
    첫 직장 얻고 한동안 시간 낼 틈이 없었다가 이제 합니다.
    항상 감사합니다!
    Private Sub CommandButton2_Click()

    With Range("D" & Range("A2"))
    .Offset(0, 0) = Me.TextBox1
    .Offset(0, 1) = Me.ComboBox2
    .Offset(0, 2) = Val(Me.TextBox3)
    End With


    End Sub
    ---------------------------------------------------------------------------
    Private Sub CommandButton3_Click()
    Range("D" & Range("A2")).EntireRow.Delete
    End Sub

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      첫 직장 축하드립니다
      도움되길 진심으로 바랄께요

  • @김태일-d3x
    @김태일-d3x 2 ปีที่แล้ว +1

    안녕하세요.
    셀내용이 바뀌면 유저폼의 레이블1로 나타나게 했는데
    이게 실시간으로 셀내용이 바뀔때마다 레이블1에서 확인이 가능하게 하는방법이 있나요?

    • @excelloveman-3399
      @excelloveman-3399  2 ปีที่แล้ว

      안녕하세요
      강의 관련 질문은 아래 주소의
      오픈채팅방 이용 부탁드립니다.
      파일이나 캡쳐본으로 서로 전달해야
      빠른 답변이 가능합니다.
      제 강의를 듣는 구독자 분들이
      VBA 학습을 위해 만든 방입니다.
      입장 후 인사와 공지 준수는 필수 입니다^^
      학습 하시는데 많은 도움이 되실거에요.
      유튜브 '엑사남'의 Excel VBA 함께하기
      open.kakao.com/o/glXWEB3b

  • @agpapa995
    @agpapa995 2 ปีที่แล้ว

    중간에 지지직 소리가 차이나게 커서 귀가 아픕니다.

  • @canadamomowooju
    @canadamomowooju 4 ปีที่แล้ว

    오늘도 재미있는 강의 감사합니다 :)
    유저폼의 '조회' 버튼 부분에서 입력한 값이 없으면, 메시지 박스를 띄우는 부분을 추가해서 코딩하고 싶었는데 오류가 나네요 ㅎㅎ
    if- intersect - else - end if 를 응용하고 싶었는데, 아래 코딩으로는 안되는것 같습니다 ㅠㅠ;;
    조언해 주시면 좀더 공부해 보겠습니다. 감사합니다!!!
    Private Sub CommandButton3_Click()
    'Lookup
    Dim lngR As Long
    lngR = Range("E65536").End(xlUp).Row

    Range("B4") = Me.TextBox1
    Me.ComboBox1 = Range("B6")
    Me.TextBox2 = Range("B7")
    '>> 이부분 내용을 추가하고 싶었습니다.
    If Intersect(Range("B4"), Range("E4:E" & lngR)) Is Nothing Then
    MsgBox Range("B4") & " is not found."
    End If
    End Sub

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว +1

      Intersect(Range("B4"), Range("E4:E" & lngR))
      이 코드는 뜻은 B4셀과 E4:E? 범위가 겹치는 부분이 있는가?
      라는 뜻입니다.
      현재 실습파일 기준으로 원하는 코딩을 하시려면
      잘못된 기준이 들어오면 셀에 match 로 번호를 찾는 셀에 오류가 날것이고
      그셀이 오류라면 검색한 이름이 없는것이니
      아래처럼 응용하시면 됩니다.
      If IsError(Range("A2")) Then
      MsgBox "조회 결과가 없습니다."
      Exit Sub
      End If

    • @canadamomowooju
      @canadamomowooju 4 ปีที่แล้ว

      @@excelloveman-3399 IsError는 응용할수 있는 곳이 정말 많을거 같아요!! 바쁘실텐데 답변 정말 감사합니다!!!! :)

  • @valuablejin
    @valuablejin 4 ปีที่แล้ว +2

    유저폼이 열리게 하는 단추는 어떻게 만드는건가요
    폼만들고 다해놨는데 정작 저 단추를 못만들고 있네요

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      개발도구-삽입-양식컨트롤-단추 입니다

  • @박새결-j8v
    @박새결-j8v 2 ปีที่แล้ว

    안녕하세요 잘보고 있는데 혹시 sheet1에서 입력폼 만든다음에 sheet2에 작성이되게는 어떻게 하나요!??

    • @excelloveman-3399
      @excelloveman-3399  2 ปีที่แล้ว

      안녕하세요
      강의 관련 질문은 아래 주소의
      오픈채팅방 이용 부탁드립니다.
      파일이나 캡쳐본으로 서로 전달해야
      빠른 답변이 가능합니다.
      제 강의를 듣는 구독자 분들이
      VBA 학습을 위해 만든 방입니다.
      입장 후 인사와 공지 준수는 필수 입니다^^
      학습 하시는데 많은 도움이 되실거에요.
      유튜브 '엑사남'의 Excel VBA 함께하기
      open.kakao.com/o/glXWEB3b

  • @pianoman3810
    @pianoman3810 4 ปีที่แล้ว

    영상내용과는 관련은 없는데 궁금한걸 찾다찾다 못찾고 댓글 드립니다
    외부참조가 연결된 엑셀파일이 제 사무실의 컴퓨터에서 상시로 열려있는 상태에서 적당한 주기적인 시간(5분이나 10분정도마다) 데이터>연결편집>"값업데이트(U)" 의 버튼을 스스로 눌러주는 기능과 스스로 저장하는 기능이 가능한지 가능하면 방법을 도움 받고 싶습니다
    (외부참조의 원본파일이 업데이트 될때마다 적당한 주기로 그값을 받아와서 변경이 되도록 하고, 이 파일을 스마트폰으로 읽기전용으로 보더라도 그 업데이트 된 정보를 볼 수 있도록 주기적으로 스스로 저장되게 하길 원합니다.)
    이런 동작을 VBA로 통제가 가능할까요?

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว +1

      기본기능상 외부파일참조는 수동 업데이트를 해야 합니다
      말씀하신 시간 기준으로 업데이트를
      자동으로 하려면 ontime 메서드를 사용하면
      주기적인 시간 간격으로 리프래시가 가능하지만
      매크로가 계속 돌고 있어야 합니다
      ontime 으로 5분간격으로 리프래시하고 저장하는 코드가 계속 실행되고 있어야 한다는 말이 됩니다
      Application.OnTime Now + TimeValue("00:05:00"), "실행할프로시져명"
      이런식으로요
      이건 5분에 한번씩 프로시져를 실행하라는 명령입니다
      엑셀이 항상 켜져있는 상태에서 동작하며
      동작될때 다른작업을 하면 정상적인 동작이 안될수도 있습니다
      스마트폰으로 본다는게 애매하네요
      어떤방법으로 보시는지 모르겠으나
      위 방법으로 공유폴더나 클라우드에 저장된것을
      또는 메일로 받은것을
      열어서 보면 되겠지요
      처음이라 답변드렸습니다
      앞으로 강의 관련 문의가 아니면 자제 부탁드립니다

    • @pianoman3810
      @pianoman3810 4 ปีที่แล้ว

      @@excelloveman-3399 상세한 답변 감사합니다
      무관한 질문은 줄이겠습니다

  • @뚜리스타
    @뚜리스타 4 ปีที่แล้ว +1

    엑사남 강의가 제일 쉬웠어요....^^ 항상 감사합니다.
    Private Sub CommandButton1_Click() '조회시
    Dim i, lngR As Long
    lngR = Range("D65536").End(xlUp).Row
    Range("A1") = Me.TextBox1
    For i = 3 To lngR
    If Range("d" & i) = Range("a1") Then
    Range("a2") = Range("d" & i).Offset(0, -1) + 2
    End If
    Next i
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")
    End Sub
    Private Sub CommandButton2_Click() '수정시..
    Range("D" & Range("a2")) = Me.TextBox1
    Range("E" & Range("a2")) = Me.ComboBox1
    Range("F" & Range("a2")) = Val(Me.TextBox3)
    End Sub
    Private Sub CommandButton3_Click() '삭제시...
    Range("c" & Range("a2")).Resize(1, 4).Delete
    End Sub
    Private Sub UserForm_Initialize() '성별 수정시 필요하내요...
    Me.ComboBox1.List = Array("남", "여")
    End Sub
    이름을 하고 성별이 수정이 되지 않아서 조금 변경해 봤습니다.

  • @asdf-fb3xw
    @asdf-fb3xw 2 ปีที่แล้ว

    Option Explicit
    '조회버튼
    Private Sub CommandButton1_Click()

    Range("A1") = Me.TextBox1
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")

    End Sub
    '수정버튼
    Private Sub CommandButton2_Click()
    Range("E" & Range("A2")) = Me.ComboBox1
    Range("F" & Range("A2")) = Val(Me.TextBox3)
    End Sub
    '삭제버튼
    Private Sub CommandButton3_Click()
    Range("C" & Range("A2")).Resize(1, 4).Delete
    End Sub
    '성별 콤보박스
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

  • @김기성-s4n
    @김기성-s4n 3 ปีที่แล้ว

    이름에 숫자를 넣으면 조회가 되지 않네요 어떻게 하면 될까요

  • @김영희-i9m5u
    @김영희-i9m5u ปีที่แล้ว +1

    강의 보면서 댓글은 처음 달아봅니다
    저는 약간 노가다(?) 방식으로 한 것 같기도 하고
    다른 댓글들도 참고해봐야 될 것 같습니다
    Private Sub CommandButton2_Click() '수정

    Dim i As Long
    i = Range("A2")
    Range("D" & i) = Me.TextBox1
    Range("E" & i) = Me.ComboBox1
    Range("F" & i) = Me.TextBox3

    End Sub
    --------------------------------------------------------------------
    Private Sub CommandButton3_Click() '삭제

    Dim i As Long
    Dim lngE As Long
    Dim rngC As Range

    i = Range("A2")
    lngE = Range("C10000").End(xlUp).Row
    Set rngC = Range("C" & i + 1 & ":F" & lngE)

    Range("C" & i).Resize(1, 4).Clear
    rngC.Copy
    Range("C" & i).PasteSpecial
    Range("C" & lngE).Resize(1, 4).Clear
    End Sub

  • @뽀리너죠
    @뽀리너죠 4 ปีที่แล้ว

    오늘도 질문있습니다~! 콤보박스 list를 Array 형태로 불러오지 않고 이름관리자로 범위를 선택해 놓은 경우 해당 list로 불러올때는 어떻게 해야 할까요? Range("이름관리자이름") 이런식으로 하니 오류가 나네요.

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว +1

      방법은 몇 가지가 있는데요
      범위 이름 정의 후 많이 사용하는 방법은
      아래와 같이 해보세요 ^^
      Me.ComboBox1.RowSource = Range("정의한이름").Address

    • @뽀리너죠
      @뽀리너죠 4 ปีที่แล้ว

      @@excelloveman-3399 바로 됬습니다!!! 감사합니다.!!!
      응용해 보려고
      값에 따라 콤보박스 Rowsource 값을 다르게 가져오려고 했는데 그건 또 안되네요;; ㅎ
      어렵습니다 VBA~ ㅠㅠ
      If Range("A1") = "A" Then
      Me.ComboBox2.RowSource = Range("이름관리자1").Address
      Else
      Me.ComboBox2.RowSource = Range("이름관리자2").Address
      End If

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      이름 정의한 범위가 둘 다 같은 시트에 있나요?
      만약 시트가 다르면
      시트이름을 넣어죠야 합니다

    • @뽀리너죠
      @뽀리너죠 4 ปีที่แล้ว +1

      @@excelloveman-3399 네 테스트라서 현재 한시트에 있습니다~~

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      카톡방에 공유해 주세요. 테스트 파일과 함께

  • @김애용하세유
    @김애용하세유 2 ปีที่แล้ว

    어려워서 댓글 참고 할수밖에없네요,,,ㅋ
    수정
    Private Sub CommandButton1_Click()
    Range("e" & Sheet1.Range("g2")) = Me.ComboBox1
    Range("f" & Sheet1.Range("g2")) = Val(Me.TextBox2)
    End Sub
    삭제
    Private Sub CommandButton2_Click()
    Range("d" & Sheet1.Range("g2")).EntireRow.Delete
    End Sub

  • @퐁당퐁당-h4o
    @퐁당퐁당-h4o 4 ปีที่แล้ว +1

    하다보니 꼬였네요. 더이상 안풀림 ㅠㅠ
    Private Sub CommandButton2_Click()
    '// 수정 시
    Range("B1") = Me.TextBox1
    Cells(Range("B2"), 4).Offset(0, 1) = Me.ComboBox1
    Cells(Range("B2"), 4).Offset(0, 2) = Me.TextBox3
    End Sub
    Private Sub CommandButton3_Click()
    '// 삭제 시
    Range("B1") = Me.TextBox1
    Range("C" & Range("B2")).Resize(1, 4).Clear
    End Sub
    Private Sub UserForm_Initialize()

    Me.ComboBox1.List = Array("남", "여")
    End Sub

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      F8 로 한줄씩 디버깅 해보세요
      디버깅도 실력입니다

  • @jeongseungchon
    @jeongseungchon 3 ปีที่แล้ว +1

    과제물입니다.
    Option Explicit
    Private Sub CommandButton1_Click()
    Dim strD As String

    On Error Resume Next

    Range("A1") = Me.TextBox1
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")
    If Range("A2") = "#N/A" Then
    MsgBox "찾는 사람이 없습니다."
    End If
    On Error GoTo 0
    End Sub
    Private Sub CommandButton2_Click()

    Dim lngR As Long
    Range("F" & Range("A2")) = Me.TextBox3
    '나이만 수정할 수 있다.'

    End Sub
    Private Sub CommandButton3_Click()
    Dim rngA As Range
    Dim rngB As Range

    Set rngA = Range("C2").Offset(0, 1).CurrentRegion

    For Each rngB In rngA
    If rngB = Range("A1") Then
    Range("C" & Range("A2")).Resize(1, 4).Delete
    End If
    Next
    End Sub

  • @고정훈-r1l
    @고정훈-r1l 4 ปีที่แล้ว +1

    안녕하세요 이번강의도 너무나 유익하게 들었습니다 감사합니다.
    없는 사람을 조회했을 때 조회가 되지 않게 해봤습니다 감사합니다.
    Option Explicit
    Private Sub CommandButton1_Click()
    Dim RNGTT As Range
    Dim RNGYY As Range
    Dim RNGN As Long

    Set RNGTT = Range("C2").Offset(0, 1).CurrentRegion
    On Error Resume Next
    RNGN = 1
    Range("A1") = Me.TextBox1
    For Each RNGYY In RNGTT
    If RNGYY = Range("A1") Then
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")
    RNGN = 0
    End If
    Next
    If RNGN 0 Then
    MsgBox "조회되는 사람이 없습니다"
    Unload UserForm2
    End If
    On Error GoTo 0
    End Sub
    Private Sub CommandButton2_Click()
    Range("E" & Range("A2")) = Me.ComboBox1
    Range("F" & Range("A2")) = Me.TextBox3

    End Sub
    Private Sub CommandButton3_Click()
    Dim rngT As Range
    Dim rngY As Range

    Set rngT = Range("C2").Offset(0, 1).CurrentRegion

    For Each rngY In rngT
    If rngY = Range("A1") Then
    Range("C" & Range("A2")).Resize(1, 4).Delete
    End If
    Next
    End Sub

  • @hucklee3919
    @hucklee3919 4 ปีที่แล้ว +2

    별로 한 일도 없었던 것 같은데 쏜살같이 한 주가 지나가버렸네요. (내심 금주 안엔 다 따라갈 수 있겠다 싶었는데요...ㅜㅜ)
    1. 조회
    Private Sub CommandButton1_Click()
    Range("A1") = Me.TextBox1
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")
    End Sub
    2. 수정
    Private Sub CommandButton2_Click()

    Range("D" & Range("A2")) = Me.TextBox1
    Range("E" & Range("A2")) = Me.ComboBox1
    Range("F" & Range("A2")) = Val(Me.TextBox3)

    Unload UserForm1
    End Sub
    ------------------------------------------------------
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub
    3. 삭제
    Private Sub CommandButton3_Click()
    Range("C" & Range("A2")).Resize(1, 4).Delete
    Range("A1").ClearContents
    End Sub

    • @excelloveman-3399
      @excelloveman-3399  4 ปีที่แล้ว

      네 시간이 참 빠르네요 ㅎㅎ
      너무 조급하게 무리하지 마세요

  • @김기왕-x9s
    @김기왕-x9s 7 หลายเดือนก่อน

    재미있습니다.
    Private Sub CommandButton1_Click()

    Range("A1") = Me.TextBox1
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")

    End Sub
    Private Sub CommandButton2_Click()
    Dim rt As Integer
    rt = Range("A2")
    Range("D" & rt) = Me.TextBox1
    Range("E" & rt) = Me.ComboBox1
    Range("F" & rt) = Me.TextBox3
    End Sub
    Private Sub CommandButton3_Click()
    Dim rt As Integer
    rt = Range("A2")
    Range("C" & rt).Resize(1, 4).Delete
    End Sub
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = Array("남", "여")
    End Sub

  • @pagchuseon
    @pagchuseon หลายเดือนก่อน +1

    23강 마치는데 시간이 한참 걸렸어요..
    Private Sub CommandButton1_Click()

    Range("A1") = Me.TextBox1
    Me.ComboBox1 = Range("A3")
    Me.TextBox3 = Range("A4")

    End Sub
    Private Sub CommandButton2_Click()
    Range("D" & Range("a2")) = Me.TextBox1
    Range("E" & Range("a2")) = Me.ComboBox1
    Range("F" & Range("a2")) = Val(Me.TextBox3)


    Unload UserForm2
    End Sub
    Private Sub CommandButton3_Click()

    Range("C" & Range("a2")).Resize(1, 4).Clear

    Unload UserForm2
    End Sub

    • @excelloveman-3399
      @excelloveman-3399  หลายเดือนก่อน

      전 잘하는데 20년 걸렸어요~~~ ㅎㅎ
      제가 시작할때는 책도 유툽도 없었어요.