Update textbox with more than one combobox

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • mortezataheri

    • 2017/01/05
    • 16

    [حل شده] Update textbox with more than one combobox

    سلام ، اطلاعات زیر در sheet 1 فایل اکسل قرار دارد.

    I H G F E D C B A
    july
    Production
    June
    Production
    May
    Production
    Apr
    Production
    Mar
    Production
    Feb
    Production
    Jan
    Production
    Month
    Name
    1
    101 95 80 110 105 102 100 January Ali 2
    111 112 100 75 98 96 90 February Mehrdad 3
    74 102 120 127 135 122 120 March Nazanin 4
    68 85 40 43 51 42 35 April Abbas 5
    June 6
    Jly 7

    Column A = cboName
    Column B = cboMonth
    Column C-I = Production / Month

    من میخوام با انتخاب فرد از cboName و ماه از cboMonth ساعت تولید فرد مشخص در ماه معین در تکست باکس txtproduct اتوماتیک گنجانده شود.
    لطفا راهنمائی بفرمایید
    سپاس
  • rasools13

    • 2017/01/20
    • 360
    • 80.00

    #2
    سلام
    کد PHP:
    Public Col As Integer
    Private Sub cboName_Change()
        
    Dim EName As String
        Dim Row
    Col As Integer
        EName 
    Me.cboName.text
        
    If EName <> "" Then
            With Application
    .WorksheetFunction
                Row 
    = .Match(ENameSheets("sheet1").Range("A2:A100"), 0)
                
    GetMonthNum (Me.cboMonth.text)
                
    txtproduct.text Sheets("sheet1").Cells(Row 1Col 2)
            
    End With
        End 
    If
    End Sub
    Sub GetMonthNum
    (Month As String)
        
    Select Case Month
            
    Case Jan
                Col 
    1
            
    Case Feb
                Col 
    2
            
    Case Mar
                Col 
    3
            
    Case Apr
                Col 
    4
            
    Case May
                Col 
    5
            
    Case June
                Col 
    6
            
    Case July
    End Sub 
    ..
    اول ماه بعد نام انتخاب شود
    [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
    [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
    [/CENTER]

    کامنت

    • mortezataheri

      • 2017/01/05
      • 16

      #3
      سلام اقا رسول
      من در فایلم اطلاعات دیگری مثل شماره کارمندی افراد و نوع شیفت در ستونهای دیگه دارم که اونا رو با استفاده از cboName در txtbox های دیگری استفاده میکنم
      کد:
      Private Sub cboName_Change()
          Dim EName As String
          Dim Row As Integer
          EName = Me.cboName.Text
          If EName <> "" Then
              With Application.WorksheetFunction
                  Row = .Match(EName, Sheets("sheet1").Range("A2:A100"), 0)
                  txtEmployeeNumber.Text = .Index(Sheets("sheet1").Range("B2:B100"), Row)
                  txtShift.Text = .Index(Sheets("sheet1").Range("C2:C100"), Row)
              End With
          End If
      End Sub
      چون
      Private Sub cboName_Change()
      دوبار تعریف شده خطا میده
      اگه کد رو جوری بنویسیم که بر اساس cboMonth نوشته بشه مشکل برطرف میشه؟ یعنی اول نام انتخاب بشه بعد ماه
      جدول بالا کامل نبوده و فقط مثالی برای مسئله من هست
      Last edited by mortezataheri; 2017/02/25, 19:31.

      کامنت

      • mortezataheri

        • 2017/01/05
        • 16

        #4
        کد:
        Public Col As Integer
        Private Sub cboName_Change()
            Dim EName As String
            Dim Row, Col As Integer
            EName = Me.cboName.Text
            If EName <> "" Then
                With Application.WorksheetFunction
                    Row = .Match(EName, Sheets("sheet1").Range("A2:A100"), 0)
                    [COLOR=#b22222]txtEmployeeNumber.Text = .Index(Sheets("sheet1").Range("B2:B100"), Row)
                    txtShift.Text = .Index(Sheets("sheet1").Range("C2:C100"), Row)[/COLOR]
                    GetMonthNum (Me.cboMonth.Text)
                    txtproduct.Text = Sheets("sheet1").Cells(Row + 1, Col + 2)
                End With
            End If
        End Sub
        Sub GetMonthNum(Month As String)
            Select Case Month
                Case Jan
                    Col = 1
                Case Feb
                    Col = 2
                Case Mar
                    Col = 3
                Case Apr
                    Col = 4
                Case May
                    Col = 5
                Case June
                    Col = 6
                Case July
        End Sub
        نظرتون راجع به کد بالا چیه؟
        ابته از این خط اشکال میگیره
        Public Col As Integer

        کامنت

        • rasools13

          • 2017/01/20
          • 360
          • 80.00

          #5
          نوشته اصلی توسط mortezataheri
          سلام اقا رسول
          من در فایلم اطلاعات دیگری مثل شماره کارمندی افراد و نوع شیفت در ستونهای دیگه دارم که اونا رو با استفاده از cboName در txtbox های دیگری استفاده میکنم
          کد:
          Private Sub cboName_Change()
              Dim EName As String
              Dim Row As Integer
              EName = Me.cboName.Text
              If EName <> "" Then
                  With Application.WorksheetFunction
                      Row = .Match(EName, Sheets("sheet1").Range("A2:A100"), 0)
                      txtEmployeeNumber.Text = .Index(Sheets("sheet1").Range("B2:B100"), Row)
                      txtShift.Text = .Index(Sheets("sheet1").Range("C2:C100"), Row)
                  End With
              End If
          End Sub
          چون
          Private Sub cboName_Change()
          دوبار تعریف شده خطا میده
          اگه کد رو جوری بنویسیم که بر اساس cboMonth نوشته بشه مشکل برطرف میشه؟ یعنی اول نام انتخاب بشه بعد ماه
          جدول بالا کامل نبوده و فقط مثالی برای مسئله من هست
          بله میشود فقط کمی تغییرات جزئی میخواد
          [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
          [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
          [/CENTER]

          کامنت

          • mortezataheri

            • 2017/01/05
            • 16

            #6
            کد:
            Public Col As Integer
            Private Sub cboName_Change()
                Dim EName As String
                Dim Row, Col As Integer
                EName = Me.cboName.Text
                If EName <> "" Then
                    With Application.WorksheetFunction
                        Row = .Match(EName, Sheets("sheet1").Range("A2:A100"), 0)
                        [COLOR=#b22222]txtEmployeeNumber.Text = .Index(Sheets("sheet1").Range("B2:B100"), Row)
                        txtShift.Text = .Index(Sheets("sheet1").Range("C2:C100"), Row)[/COLOR]
                        GetMonthNum (Me.cboMonth.Text)
                        txtproduct.Text = Sheets("sheet1").Cells(Row + 1, Col + 4)
                    End With
                End If
            End Sub
            Sub GetMonthNum(Month As String)
                Select Case Month
                    Case Jan
                        Col = 4
                    Case Feb
                        Col = 5
                    Case Mar
                        Col = 6
                    Case Apr
                        Col = 7
                    Case May
                        Col = 8
                    Case June
                        Col = 9
                    Case July
              End Sub
            این کد رو که وارد میکنم ار خط اول خطا میگیره ولی با حذف خط اول بدون توجه به انتخاب ماه همواره ارقام ستونی رو که در خط دستور

            کد:
            txtproduct.Text = Sheets("sheet1").Cells(Row + 1, Col + [COLOR=#b22222][B]4[/B][/COLOR])
            قرار دارند تو txtproduct ثبت میکنه به غبارت دیگه case select انجام نمیشه
            Last edited by mortezataheri; 2017/02/25, 23:46.

            کامنت

            • rasools13

              • 2017/01/20
              • 360
              • 80.00

              #7
              خوب دو متد رو باهم ادغام کنید و اون خط اول روهم پاک کنید

              کد:
              کد PHP:
              Private Sub cboName_Change()
                  
              Dim EName As String
                  Dim Row
              Col As Integer
                  EName 
              Me.cboName.Text
                  
              If EName <> "" Then
                      With Application
              .WorksheetFunction
                          Row 
              = .Match(ENameSheets("sheet1").Range("A2:A100"), 0)
                          
              txtEmployeeNumber.Text = .Index(Sheets("sheet1").Range("B2:B100"), Row)
                          
              txtShift.Text = .Index(Sheets("sheet1").Range("C2:C100"), Row)
                           
              Select Case Me.cboMonth.Text
                              
              Case Jan
                                  Col 
              4
                              
              Case Feb
                                  Col 
              5
                              
              Case Mar
                                  Col 
              6
                              
              Case Apr
                                  Col 
              7
                              
              Case May
                                  Col 
              8
                              
              Case June
                                  Col 
              9
                              
              Case July
                                  Col 
              10
                            End Select
                          txtproduct
              .Text Sheets("sheet1").Cells(Row 1Col)
                      
              End With
                  End 
              If
              End Sub 
              [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
              [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
              [/CENTER]

              کامنت

              • mortezataheri

                • 2017/01/05
                • 16

                #8
                کد:
                [COLOR=#000000][COLOR=#0000BB][COLOR=#000000][COLOR=#0000BB]txtproduct[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Text [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Sheets[/COLOR][COLOR=#007700]([/COLOR][/COLOR]"sheet1"[COLOR=#000000][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Row [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][/COLOR][COLOR=#ff0000]Col[/COLOR][COLOR=#000000][COLOR=#007700])[/COLOR][/COLOR] 
                [/COLOR][/COLOR]
                متاسفانه همچنان از کلمه col که برای انتخاب ستون ماه است ایراد می گیرد. و اگر بجای آن هر عددی بگذاریم ان را به مثابه شماره ستون فرض کرده و انتخاب ماه از cboMonth بلا اثر است
                Last edited by mortezataheri; 2017/02/26, 13:19.

                کامنت

                • rasools13

                  • 2017/01/20
                  • 360
                  • 80.00

                  #9
                  نوشته اصلی توسط mortezataheri
                  کد:
                  [COLOR=#000000][COLOR=#0000BB][COLOR=#000000][COLOR=#0000BB]txtproduct[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Text [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Sheets[/COLOR][COLOR=#007700]([/COLOR][/COLOR]"sheet1"[COLOR=#000000][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Cells[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Row [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][/COLOR][COLOR=#ff0000]Col[/COLOR][COLOR=#000000][COLOR=#007700])[/COLOR][/COLOR] 
                  [/COLOR][/COLOR]
                  متاسفانه همچنان از کلمه col که برای انتخاب ستون ماه است ایراد می گیرد. و اگر بجای آن هر عددی بگذاریم ان را به مثابه شماره ستون فرض کرده و انتخاب ماه از cboMonth بلا اثر است
                  یک فایل پیوست کنید
                  [CENTER][B]بهترین راه ذخیره زمان(یادگیری)،،حل مشکلات دیگران است
                  [COLOR=#0000ff]مشکلات دیگران، روزی مشکلات ما هم خواهد شد[/COLOR][/B][COLOR=#ff0000][B][FONT=arial][/FONT][/B][/COLOR]
                  [/CENTER]

                  کامنت

                  • mortezataheri

                    • 2017/01/05
                    • 16

                    #10
                    نوشته اصلی توسط rasools13
                    یک فایل پیوست کنید
                    متاسفانه بدلیل اینکه تغییرات متعددی روی فایل انجام دادم و اونا رو ذخیره نکردم حساب کار از دستم در رفته، اما در نهایت 2 راه حل برای مشکلم پیدا کردم که به اشتراک میزارم
                    کد:
                       Private Sub cboName_Change()
                        Dim EName As String
                        Dim RowNum As Long, ColNum As Long
                        EName = Me.cboName.Text
                        If EName <> "" Then
                            With Application.WorksheetFunction
                               RowNum = .Match(EName, Sheets("sheet1").Range("A2:A100"), 0)
                               
                              ColNum = GetMonthNum(Me.cboMonth.Text) + 3
                               txtProduct.Value = Sheets("sheet1").Cells(RowNum + 1, ColNum)
                            End With
                        End If
                    End Sub
                    
                    Private Function GetMonthNum(Mth As String) As Long
                        Select Case Mth
                            Case "January":  GetMonthNum = 1
                            Case "February":  GetMonthNum = 2
                            Case "March":  GetMonthNum = 3
                            Case "April":  GetMonthNum = 4
                            Case "May":  GetMonthNum = 5
                            Case "June": GetMonthNum = 6
                            Case "July": GetMonthNum = 7
                            Case "August":  GetMonthNum = 8
                            Case "September": GetMonthNum = 9
                            Case "October":  GetMonthNum = 10
                            Case "November":  GetMonthNum = 11
                            Case "December":  GetMonthNum = 12
                        End Select
                    End Function
                    و راه حل دوم که خلاصه تره اما فقط زمانی که اسامی ماه ها به میلادی باشه جواب میده مثل January"" یا "Jan" . اگر بجای اسم ماه شماره اون نوشته بشه مثل "1 "یا اسامی غیر میلادی مثل "Farvardin" یا "فروردین" کارنمیکنه
                    کد:
                    Private Sub cboName_Change()
                        Dim EName As String
                        Dim RowNum As Long, ColNum As Long
                        EName = Me.cboName.Text
                        If EName <> "" Then
                            With Application.WorksheetFunction
                               RowNum = .Match(EName, Sheets("sheet1").Range("A2:A100"), 0)
                    ColNum = Month(DateValue("1/" & Me.cboMonth.Text & "/2017")) + 3          
                     txtProduct.Value = Sheets("sheet1").Cells(RowNum + 1, ColNum)
                            End With
                        End If
                    End Sub

                    کامنت

                    چند لحظه..