나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 오솔길 (CHAN700)

추천:  2
파일:     조회:  2222
제목:   [RE]코 드 좀봐 주세요
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

1. 엑셀 버전(95,97,2000,2002):
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP):
3. CPU (486,PentiumI/II/III/IV...):
4. RAM (32,64,128,256,512MB,1G...): 

* 아래줄에 질문을 작성하세요 >>
안녕하세요
아래코드는 검색하여 수량 입력하는것인데요
문제는 텍스터박스의 문자와 시트의문자와 비교할때 대문자 소문자 구별하지않게
하고싶습니다 시트에나 박스에나 대,소문자가 섞여 있거든요
좀고처주시면 감사 하겠습니다

Option Explicit

Private Sub CommandButton1_Click()
  '지역,품명,규격,수량
  If Txt지역 = "" Then
    MsgBox "지역을 입력하세요"
    Txt지역.SetFocus
    Exit Sub
  End If
  If Txt품명 = "" Then
    MsgBox "품명을 입력하세요"
    Txt품명.SetFocus
    Exit Sub
  End If
  If Txt규격 = "" Then
    MsgBox "규격을 입력하세요"
    Txt규격.SetFocus
    Exit Sub
  End If
  If Txt수량 = "" Then
    MsgBox "수량을 입력하세요"
    Txt수량.SetFocus
    Exit Sub
  End If
  If Cmb날짜.Value = "" Then
    MsgBox "날짜를 입력하세요"
    Cmb날짜.SetFocus
    Exit Sub
  End If
  If Cmb항목.Value = "" Then
    MsgBox "항목을 입력하세요"
    Cmb항목.SetFocus
    Exit Sub
  End If
  Dim intA As Integer
  Dim intB As Integer
  Dim Rng As Range
  Dim YesOk As Boolean
  intB = Cmb날짜 * 3 + IIf(Cmb항목.Value = "입고", 1, IIf(Cmb항목.Value = "출고", 2, 3))
  With ActiveSheet
    intA = .Range("A3").CurrentRegion.Rows.Count + 2
    For Each Rng In .Range("A4:A" & intA - 1)
      If Rng = Txt지역 And Rng.Offset(0, 1) = Txt품명 And Format$(Rng.Offset(0, 2), "#") = Txt규격 Then
        If MsgBox("이미 입력된 자료가 있습니다" & vbCr & "여기에 추가할까요?" & vbCr & _
                  "(입력된 자료에 추가하지않고 새로 추가하려면(아니오))", vbInformation + vbYesNo, "추가입력") = vbYes Then
          YesOk = True
          Rng.Cells(1, intB) = Rng.Cells(1, intB) + Txt수량
        Else
          MsgBox "기존 자료에 추가하지않고 새 항목을 추가합니다."
          YesOk = False
          Exit For
        End If
      End If
    Next Rng
    If YesOk = False Then
      .Cells(intA, 1) = Txt지역
      .Cells(intA, 2) = Txt품명
      .Cells(intA, 3) = Txt규격
      .Cells(intA, intB) = Txt수량
    End If
  End With
 Txt지역.SetFocus
 End Sub

Private Sub CommandButton2_Click()
  Unload Me
End Sub

Private Sub UserForm_Initialize()
  Dim intA As Integer
  Cmb항목.List = Array("입고", "출고", "반품")
  For intA = 1 To 31
    Cmb날짜.AddItem intA
  Next intA
End Sub
==============[오솔길님 글에 대한 답변입니다]==============
안녕하세요? 오솔길 님!

코드를 수정해 쓰실 수도 있지만, 별로 바람직 스럽지 못한 방법으로 자료를 관리하고 계신 것 같습니다.

각 날짜별로 입고, 출고, 반품 필드를 만든다는 것은 저로선 상상하기도 힘든 일이로군요

코드를 손보시는 것은 한참 나중에 해야 하셔야 할 일 같습니다.

먼저, 자료를 관리하는 양식에 큰 문제가 있는 것은 아닌지부터 고민해 보심이 좋겠습니다.

그럼...행운이 있으시길...!

==============[황기성님 글에 대한 답변입니다]==============
감사합니다
그런데요 날짜별로 하는 이유는 언제 무엇이 들어오고 나갔는지 확인할 경우가
생기구요 그리고 마지막 31일 다음에는 입고,출고,반품 항목을 만들어 한달간의
누계가 나오도록 할겁니다.
그리고 자동필터를 해서 항상 어느지역 혹은 어느품명이 어떻게됬은지 알수있게요
날짜 별로 시트를 만들수도 아니면 지역별로 시트를 만들수도 있겠지만
현제의것이 모든걸 한시트에서 할수있으니까 저로서는최선의길인것 같습니다
그러니까 다시한번 질문에 답변부탁드립니다
 
[불량 게시물 신고]  
        
  

작성일 : 2003-09-02(13:29)
최종수정일 : 2003-09-02(13:29)
 


 ◎ 관련글

  제 목   작성자   날짜
코 드 좀봐 주세요 오솔길 2003-09-02
[RE]공부삼아 만들어 보았습니다. 푸른가을하늘 2003-09-02
[RE]코 드 좀봐 주세요 황기성 2003-09-02
[RE]코 드 좀봐 주세요 오솔길 2003-09-02
[RE]읽어보세요 정해원 2003-09-02