미래에서 온 수강생입니다. 오늘도 유익한 강의 감사합니다 ㅎㅎ 오래전 강의 영상이라 댓글을 보실진 모르겠지만 엑사남님 강의만 듣고 실무에서 많은 응용을 하고 효율적인 매크로를 많이 만들고있습니다. 항상 감사합니다 (_ _ 꾸벅. 숙제 올리고갑니다! '수정 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
안녕하세요 엑사남 덕분에 유용한 강의 너무 잘듣고있어 감사드립니다 단 한가지 부탁드릴게 있다면 강의 처음 또는 중간부 치직~ 치직~ 하는 화면전환 할때 소리를 작게 하거나 없애주실수 있을까요? 일단 소리 자체가 듣기싫은건 둘째치고 크기가 커서 강의 중간에 화들짝 놀라고 귀가 아픕니다. 위 요청사항 참고해주시면 감사드리겠습니다!
오늘도 재밌는 강의 잘 배워갑니다~ 다만 하나만 부탁드리자면, 중간에 엑사남 글자 나오면서 지지직하는 소리가 강의에 비해서 넘 크다보니 이어폰으로 듣다가 귀아프고 놀랍니다. ㅠ 듣기 좋은 소리도 아닌데 크기까지 하니까 강의의 흐름을 끊습니다. 이거만 수정해주신다면 더 엑사남님 강의를 듣기 좋을거 같습니다 ^^
안녕하세요. 여기서 진짜 필요한부분이 데이터 입력, 조회 그다음에 조회된 내용을 입력하기 버튼 누르면 자동으로 시트에 내용이 입력되게 하는 방법이 진짜 필요한데.. vba 교재까지 구매해서 몇번을 시도해봤는데.. 워낙 기초가 없다보니깐 조금만 상황이 달라져도.. 에러 나오고 방법을 모르겠습니다 ㅜㅜ .. 지금 만들고있는게 장비수리요청서 이런거 인데.. 어렵네요 ㅜㅜ
안녕하세요 엑사남입니다^^ 강의 관련 질문은 아래 주소의 오픈채팅방 이용 부탁드립니다. 파일이나 캡쳐본으로 서로 전달해야 빠른 답변이 가능합니다. 제 강의를 듣는 구독자 분들이 VBA 학습을 위해 만든 방입니다. 입장 후 인사와 공지 준수는 필수 입니다^^ 학습 하시는데 많은 도움이 되실거에요. 유튜브 '엑사남'의 Excel VBA 함께하기 open.kakao.com/o/glXWEB3b
과제 제출합니다! 많이 헷갈렸는데 반복하니 쉬워졌네요! 많이 감사합니다! !!수정시 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
항상 감사합니다! 추천해주신 엑셀 함수를 함께 이용한 방법을 시도해 본 후, 순수 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
오... 이번건 재밌네요 잘 마무리 했습니다. 다만, 코드를 한번 훑어본 뒤 응용해서 만들었기 때문에 복습이 꼭 필요할 것 같습니다 오늘도 강의 감사합니다 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 안녕하세요 강의 관련 질문은 아래 주소의 오픈채팅방 이용 부탁드립니다. 파일이나 캡쳐본으로 서로 전달해야 빠른 풀이 및 이해가 가능합니드 제 강의를 듣는 구독자 분들이 VBA 학습을 위해 만든 방입니다. 입장 후 인사와 공지 준수는 필수 입니다^^ 학습 하시는데 많은 도움이 되실거에요. 브 '엑사남'의 Excel VBA 함께하기 open.kakao.com/o/glXWEB3b
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("남", "여")
안녕하세요~~ 오늘도 알찬강의 재밌게 봤습니다~~~ 한가지 궁금한게 있다면 유저폼에 사용된 변수를 시트에서도( 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
강의가 많아서 확인이 쉽지 않네요 ㅜㅜ 안녕하세요 강의 관련 질문은 아래 주소의 오픈채팅방 이용 부탁드립니다. 파일이나 캡쳐본으로 서로 전달해야 빠른 풀이 및 이해가 가능합니드 제 강의를 듣는 구독자 분들이 VBA 학습을 위해 만든 방입니다. 입장 후 인사와 공지 준수는 필수 입니다^^ 학습 하시는데 많은 도움이 되실거에요. 유튜브 '엑사남'의 Excel VBA 함께하기 open.kakao.com/o/glXWEB3b
이번 강의도 재밌게 배웠습니다. 감사합니다! 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
하나의 폼에서 모든 걸 하고싶은 욕심에 .... 그리고 스핀버튼으로 자료이동하는 기능도 넣어 봤어요. 만족스럽진 않지만 그럭저럭 .... '하나의 폼에서 등록,수정,삭제,조회 모두 관리 '폼에 스핀버튼컨트롤 추가하여 자료를 하나씩 이동하며 조회가능.(이름 입혁후 조회버튼 클릭해도 조회됨.) 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 '등록시 동일인 중복 검색용
'동일이름확인 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 '수정
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)
넘나 오랜만에 강의를 듣고 과제를 하네요. 첫 직장 얻고 한동안 시간 낼 틈이 없었다가 이제 합니다. 항상 감사합니다! 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
안녕하세요 강의 관련 질문은 아래 주소의 오픈채팅방 이용 부탁드립니다. 파일이나 캡쳐본으로 서로 전달해야 빠른 답변이 가능합니다. 제 강의를 듣는 구독자 분들이 VBA 학습을 위해 만든 방입니다. 입장 후 인사와 공지 준수는 필수 입니다^^ 학습 하시는데 많은 도움이 되실거에요. 유튜브 '엑사남'의 Excel VBA 함께하기 open.kakao.com/o/glXWEB3b
오늘도 재미있는 강의 감사합니다 :) 유저폼의 '조회' 버튼 부분에서 입력한 값이 없으면, 메시지 박스를 띄우는 부분을 추가해서 코딩하고 싶었는데 오류가 나네요 ㅎㅎ 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
Intersect(Range("B4"), Range("E4:E" & lngR)) 이 코드는 뜻은 B4셀과 E4:E? 범위가 겹치는 부분이 있는가? 라는 뜻입니다. 현재 실습파일 기준으로 원하는 코딩을 하시려면 잘못된 기준이 들어오면 셀에 match 로 번호를 찾는 셀에 오류가 날것이고 그셀이 오류라면 검색한 이름이 없는것이니 아래처럼 응용하시면 됩니다. If IsError(Range("A2")) Then MsgBox "조회 결과가 없습니다." Exit Sub End If
안녕하세요 강의 관련 질문은 아래 주소의 오픈채팅방 이용 부탁드립니다. 파일이나 캡쳐본으로 서로 전달해야 빠른 답변이 가능합니다. 제 강의를 듣는 구독자 분들이 VBA 학습을 위해 만든 방입니다. 입장 후 인사와 공지 준수는 필수 입니다^^ 학습 하시는데 많은 도움이 되실거에요. 유튜브 '엑사남'의 Excel VBA 함께하기 open.kakao.com/o/glXWEB3b
영상내용과는 관련은 없는데 궁금한걸 찾다찾다 못찾고 댓글 드립니다 외부참조가 연결된 엑셀파일이 제 사무실의 컴퓨터에서 상시로 열려있는 상태에서 적당한 주기적인 시간(5분이나 10분정도마다) 데이터>연결편집>"값업데이트(U)" 의 버튼을 스스로 눌러주는 기능과 스스로 저장하는 기능이 가능한지 가능하면 방법을 도움 받고 싶습니다 (외부참조의 원본파일이 업데이트 될때마다 적당한 주기로 그값을 받아와서 변경이 되도록 하고, 이 파일을 스마트폰으로 읽기전용으로 보더라도 그 업데이트 된 정보를 볼 수 있도록 주기적으로 스스로 저장되게 하길 원합니다.) 이런 동작을 VBA로 통제가 가능할까요?
기본기능상 외부파일참조는 수동 업데이트를 해야 합니다 말씀하신 시간 기준으로 업데이트를 자동으로 하려면 ontime 메서드를 사용하면 주기적인 시간 간격으로 리프래시가 가능하지만 매크로가 계속 돌고 있어야 합니다 ontime 으로 5분간격으로 리프래시하고 저장하는 코드가 계속 실행되고 있어야 한다는 말이 됩니다 Application.OnTime Now + TimeValue("00:05:00"), "실행할프로시져명" 이런식으로요 이건 5분에 한번씩 프로시져를 실행하라는 명령입니다 엑셀이 항상 켜져있는 상태에서 동작하며 동작될때 다른작업을 하면 정상적인 동작이 안될수도 있습니다 스마트폰으로 본다는게 애매하네요 어떤방법으로 보시는지 모르겠으나 위 방법으로 공유폴더나 클라우드에 저장된것을 또는 메일로 받은것을 열어서 보면 되겠지요 처음이라 답변드렸습니다 앞으로 강의 관련 문의가 아니면 자제 부탁드립니다
엑사남 강의가 제일 쉬웠어요....^^ 항상 감사합니다. 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 이름을 하고 성별이 수정이 되지 않아서 조금 변경해 봤습니다.
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
@@excelloveman-3399 바로 됬습니다!!! 감사합니다.!!! 응용해 보려고 값에 따라 콤보박스 Rowsource 값을 다르게 가져오려고 했는데 그건 또 안되네요;; ㅎ 어렵습니다 VBA~ ㅠㅠ If Range("A1") = "A" Then Me.ComboBox2.RowSource = Range("이름관리자1").Address Else Me.ComboBox2.RowSource = Range("이름관리자2").Address End If
어려워서 댓글 참고 할수밖에없네요,,,ㅋ 수정 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
하다보니 꼬였네요. 더이상 안풀림 ㅠㅠ 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()
과제물입니다. 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
안녕하세요 이번강의도 너무나 유익하게 들었습니다 감사합니다. 없는 사람을 조회했을 때 조회가 되지 않게 해봤습니다 감사합니다. 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
별로 한 일도 없었던 것 같은데 쏜살같이 한 주가 지나가버렸네요. (내심 금주 안엔 다 따라갈 수 있겠다 싶었는데요...ㅜㅜ) 1. 조회 Private Sub CommandButton1_Click() Range("A1") = Me.TextBox1 Me.ComboBox1 = Range("A3") Me.TextBox3 = Range("A4") End Sub 2. 수정 Private Sub CommandButton2_Click()
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
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
미래에서 온 수강생입니다. 오늘도 유익한 강의 감사합니다 ㅎㅎ
오래전 강의 영상이라 댓글을 보실진 모르겠지만 엑사남님 강의만 듣고 실무에서 많은 응용을 하고 효율적인 매크로를 많이 만들고있습니다.
항상 감사합니다 (_ _ 꾸벅. 숙제 올리고갑니다!
'수정
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
안녕하세요 엑사남 덕분에 유용한 강의 너무 잘듣고있어 감사드립니다
단 한가지 부탁드릴게 있다면 강의 처음 또는 중간부 치직~ 치직~ 하는 화면전환 할때 소리를 작게 하거나 없애주실수 있을까요?
일단 소리 자체가 듣기싫은건 둘째치고
크기가 커서 강의 중간에 화들짝 놀라고 귀가 아픕니다.
위 요청사항 참고해주시면 감사드리겠습니다!
어느덧 25년 1월 이네요. 새해 복 많이 받으세요~
오늘도 재밌는 강의 잘 배워갑니다~
다만 하나만 부탁드리자면, 중간에 엑사남 글자 나오면서 지지직하는 소리가 강의에 비해서 넘 크다보니 이어폰으로 듣다가 귀아프고 놀랍니다. ㅠ 듣기 좋은 소리도 아닌데 크기까지 하니까 강의의 흐름을 끊습니다. 이거만 수정해주신다면 더 엑사남님 강의를 듣기 좋을거 같습니다 ^^
네 감사합니다
이미 올라간 강의는 수정하려 해보았지만 ㅜㅜ
안되더라고요
최근 강의들은 모두 작게 수정하였습니다
편집이 서툴러서 불편드려 죄송합니다
앞으로는 더욱 신경쓸께요
안녕하세요. 여기서 진짜 필요한부분이 데이터 입력, 조회 그다음에 조회된 내용을 입력하기 버튼 누르면 자동으로 시트에 내용이 입력되게 하는 방법이 진짜 필요한데.. vba 교재까지 구매해서 몇번을 시도해봤는데.. 워낙 기초가 없다보니깐 조금만 상황이 달라져도.. 에러 나오고 방법을 모르겠습니다 ㅜㅜ .. 지금 만들고있는게 장비수리요청서 이런거 인데.. 어렵네요 ㅜㅜ
안녕하세요 엑사남입니다^^
강의 관련 질문은 아래 주소의
오픈채팅방 이용 부탁드립니다.
파일이나 캡쳐본으로 서로 전달해야
빠른 답변이 가능합니다.
제 강의를 듣는 구독자 분들이
VBA 학습을 위해 만든 방입니다.
입장 후 인사와 공지 준수는 필수 입니다^^
학습 하시는데 많은 도움이 되실거에요.
유튜브 '엑사남'의 Excel VBA 함께하기
open.kakao.com/o/glXWEB3b
@@excelloveman-3399 안녕하세요.
그 오픈채팅방이 패스워드가 있어서요 ㅜㅜ
패스워드 알수있을까요?
@@excelloveman-3399 감사합니다.
오픈채팅방 입장하여 가입인사 드렸습니다.
과제 제출합니다!
많이 헷갈렸는데 반복하니 쉬워졌네요!
많이 감사합니다!
!!수정시
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
네 저도 뿌듯합니다 감사해요^^
설명이 아주 좋아요 구독
항상 감사합니다!
추천해주신 엑셀 함수를 함께 이용한 방법을 시도해 본 후,
순수 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
오... 이번건 재밌네요
잘 마무리 했습니다.
다만, 코드를 한번 훑어본 뒤 응용해서 만들었기 때문에
복습이 꼭 필요할 것 같습니다
오늘도 강의 감사합니다
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
좋은 강의 감사합니다
맥북 엑셀에서는 유저폼을 어떻게 불러오나요?
혹은 명령어만으로도 유저폼을 만들 수 있는지 궁금합니다
네 가능합니다
@@excelloveman-3399 답변 감사합니다^^
여러번 시도해보고 또 궁금한 점 있으면 또 연락드리겠습니다
@@standstrong9124 안녕하세요
강의 관련 질문은 아래 주소의
오픈채팅방 이용 부탁드립니다.
파일이나 캡쳐본으로 서로 전달해야
빠른 풀이 및 이해가 가능합니드
제 강의를 듣는 구독자 분들이
VBA 학습을 위해 만든 방입니다.
입장 후 인사와 공지 준수는 필수 입니다^^
학습 하시는데 많은 도움이 되실거에요.
브 '엑사남'의 Excel VBA 함께하기
open.kakao.com/o/glXWEB3b
@@excelloveman-3399 네 감사합니다^^
강의 감사합니다. 좋아요~ 꾹~ 찾으려고 하는 이름이 없는 경우 예외처리하는 방법을 찾아보다가 알려주신 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
오.... 재밌어요...ㅎㅎㅎ
오 감사해요 ㅋㅋㅋ
안녕하세요~~ 오늘도 알찬강의 재밌게 봤습니다~~~
한가지 궁금한게 있다면 유저폼에 사용된 변수를 시트에서도( 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
강의가 많아서 확인이 쉽지 않네요 ㅜㅜ
안녕하세요
강의 관련 질문은 아래 주소의
오픈채팅방 이용 부탁드립니다.
파일이나 캡쳐본으로 서로 전달해야
빠른 풀이 및 이해가 가능합니드
제 강의를 듣는 구독자 분들이
VBA 학습을 위해 만든 방입니다.
입장 후 인사와 공지 준수는 필수 입니다^^
학습 하시는데 많은 도움이 되실거에요.
유튜브 '엑사남'의 Excel VBA 함께하기
open.kakao.com/o/glXWEB3b
이번 강의도 잘들었습니다. 이름을 만약 수정했을 경우에 오류가 발생하기에 이름이 수정되었을 경우 반영하는 구문을 넣었습니다.
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
이번 강의의 핵심은 시트와 엑셀의 활용을 같이해야 실무에서 활용도가 높아진다는 점인것같습니다.
좋은 강의 감사합니다
이번 강의도 재밌게 배웠습니다. 감사합니다!
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
하나의 폼에서 모든 걸 하고싶은 욕심에 .... 그리고 스핀버튼으로 자료이동하는 기능도 넣어 봤어요.
만족스럽진 않지만 그럭저럭 ....
'하나의 폼에서 등록,수정,삭제,조회 모두 관리
'폼에 스핀버튼컨트롤 추가하여 자료를 하나씩 이동하며 조회가능.(이름 입혁후 조회버튼 클릭해도 조회됨.)
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 감사합니다!!!!
내용 감사합니다...
넘나 오랜만에 강의를 듣고 과제를 하네요.
첫 직장 얻고 한동안 시간 낼 틈이 없었다가 이제 합니다.
항상 감사합니다!
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
첫 직장 축하드립니다
도움되길 진심으로 바랄께요
안녕하세요.
셀내용이 바뀌면 유저폼의 레이블1로 나타나게 했는데
이게 실시간으로 셀내용이 바뀔때마다 레이블1에서 확인이 가능하게 하는방법이 있나요?
안녕하세요
강의 관련 질문은 아래 주소의
오픈채팅방 이용 부탁드립니다.
파일이나 캡쳐본으로 서로 전달해야
빠른 답변이 가능합니다.
제 강의를 듣는 구독자 분들이
VBA 학습을 위해 만든 방입니다.
입장 후 인사와 공지 준수는 필수 입니다^^
학습 하시는데 많은 도움이 되실거에요.
유튜브 '엑사남'의 Excel VBA 함께하기
open.kakao.com/o/glXWEB3b
중간에 지지직 소리가 차이나게 커서 귀가 아픕니다.
오늘도 재미있는 강의 감사합니다 :)
유저폼의 '조회' 버튼 부분에서 입력한 값이 없으면, 메시지 박스를 띄우는 부분을 추가해서 코딩하고 싶었는데 오류가 나네요 ㅎㅎ
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
Intersect(Range("B4"), Range("E4:E" & lngR))
이 코드는 뜻은 B4셀과 E4:E? 범위가 겹치는 부분이 있는가?
라는 뜻입니다.
현재 실습파일 기준으로 원하는 코딩을 하시려면
잘못된 기준이 들어오면 셀에 match 로 번호를 찾는 셀에 오류가 날것이고
그셀이 오류라면 검색한 이름이 없는것이니
아래처럼 응용하시면 됩니다.
If IsError(Range("A2")) Then
MsgBox "조회 결과가 없습니다."
Exit Sub
End If
@@excelloveman-3399 IsError는 응용할수 있는 곳이 정말 많을거 같아요!! 바쁘실텐데 답변 정말 감사합니다!!!! :)
유저폼이 열리게 하는 단추는 어떻게 만드는건가요
폼만들고 다해놨는데 정작 저 단추를 못만들고 있네요
개발도구-삽입-양식컨트롤-단추 입니다
안녕하세요 잘보고 있는데 혹시 sheet1에서 입력폼 만든다음에 sheet2에 작성이되게는 어떻게 하나요!??
안녕하세요
강의 관련 질문은 아래 주소의
오픈채팅방 이용 부탁드립니다.
파일이나 캡쳐본으로 서로 전달해야
빠른 답변이 가능합니다.
제 강의를 듣는 구독자 분들이
VBA 학습을 위해 만든 방입니다.
입장 후 인사와 공지 준수는 필수 입니다^^
학습 하시는데 많은 도움이 되실거에요.
유튜브 '엑사남'의 Excel VBA 함께하기
open.kakao.com/o/glXWEB3b
영상내용과는 관련은 없는데 궁금한걸 찾다찾다 못찾고 댓글 드립니다
외부참조가 연결된 엑셀파일이 제 사무실의 컴퓨터에서 상시로 열려있는 상태에서 적당한 주기적인 시간(5분이나 10분정도마다) 데이터>연결편집>"값업데이트(U)" 의 버튼을 스스로 눌러주는 기능과 스스로 저장하는 기능이 가능한지 가능하면 방법을 도움 받고 싶습니다
(외부참조의 원본파일이 업데이트 될때마다 적당한 주기로 그값을 받아와서 변경이 되도록 하고, 이 파일을 스마트폰으로 읽기전용으로 보더라도 그 업데이트 된 정보를 볼 수 있도록 주기적으로 스스로 저장되게 하길 원합니다.)
이런 동작을 VBA로 통제가 가능할까요?
기본기능상 외부파일참조는 수동 업데이트를 해야 합니다
말씀하신 시간 기준으로 업데이트를
자동으로 하려면 ontime 메서드를 사용하면
주기적인 시간 간격으로 리프래시가 가능하지만
매크로가 계속 돌고 있어야 합니다
ontime 으로 5분간격으로 리프래시하고 저장하는 코드가 계속 실행되고 있어야 한다는 말이 됩니다
Application.OnTime Now + TimeValue("00:05:00"), "실행할프로시져명"
이런식으로요
이건 5분에 한번씩 프로시져를 실행하라는 명령입니다
엑셀이 항상 켜져있는 상태에서 동작하며
동작될때 다른작업을 하면 정상적인 동작이 안될수도 있습니다
스마트폰으로 본다는게 애매하네요
어떤방법으로 보시는지 모르겠으나
위 방법으로 공유폴더나 클라우드에 저장된것을
또는 메일로 받은것을
열어서 보면 되겠지요
처음이라 답변드렸습니다
앞으로 강의 관련 문의가 아니면 자제 부탁드립니다
@@excelloveman-3399 상세한 답변 감사합니다
무관한 질문은 줄이겠습니다
엑사남 강의가 제일 쉬웠어요....^^ 항상 감사합니다.
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
이름을 하고 성별이 수정이 되지 않아서 조금 변경해 봤습니다.
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
이름에 숫자를 넣으면 조회가 되지 않네요 어떻게 하면 될까요
강의 보면서 댓글은 처음 달아봅니다
저는 약간 노가다(?) 방식으로 한 것 같기도 하고
다른 댓글들도 참고해봐야 될 것 같습니다
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
오늘도 질문있습니다~! 콤보박스 list를 Array 형태로 불러오지 않고 이름관리자로 범위를 선택해 놓은 경우 해당 list로 불러올때는 어떻게 해야 할까요? Range("이름관리자이름") 이런식으로 하니 오류가 나네요.
방법은 몇 가지가 있는데요
범위 이름 정의 후 많이 사용하는 방법은
아래와 같이 해보세요 ^^
Me.ComboBox1.RowSource = Range("정의한이름").Address
@@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 네 테스트라서 현재 한시트에 있습니다~~
카톡방에 공유해 주세요. 테스트 파일과 함께
어려워서 댓글 참고 할수밖에없네요,,,ㅋ
수정
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
하다보니 꼬였네요. 더이상 안풀림 ㅠㅠ
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
F8 로 한줄씩 디버깅 해보세요
디버깅도 실력입니다
과제물입니다.
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
안녕하세요 이번강의도 너무나 유익하게 들었습니다 감사합니다.
없는 사람을 조회했을 때 조회가 되지 않게 해봤습니다 감사합니다.
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
별로 한 일도 없었던 것 같은데 쏜살같이 한 주가 지나가버렸네요. (내심 금주 안엔 다 따라갈 수 있겠다 싶었는데요...ㅜㅜ)
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
네 시간이 참 빠르네요 ㅎㅎ
너무 조급하게 무리하지 마세요
재미있습니다.
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
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
전 잘하는데 20년 걸렸어요~~~ ㅎㅎ
제가 시작할때는 책도 유툽도 없었어요.