Page 1 of 1

หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon Apr 28, 2014 8:42 am
by zonewar123

Code: Select all

Private Sub CommandButton1_Click()
'Sheet7.Activate
lastrow = Cells(Rows.Count, 3).End(xlUp).Row
 With Range("c1:c" & lastrow)
    Set c = .Find(TextBox1.Text, LookIn:=xlValues)

If TextBox1.Text = "" Then
    
    MsgBox "¡ÃسҡÃÍ¡¢éÍÁÙÅ", 0, "¡ÃسҡÃÍ¡¢éÍÁÙÅ"

ElseIf Not c Is Nothing Then
    'Sheet7.Activate
    c.Offset(0, 2).Value = c.Offset(0, 2).Value + TextBox2.Value
    MsgBox "ÁÕÊÔ¹¤éÒÍÂÙèáÅéǺ͡¨Ó¹Ç¹à¾ÔèÁä»ÍÕ¡ :" & TextBox2.Value
    Do
    l = l + 1
    Loop Until Cells(l, 1) = ""
    'Sheet7.Cells(l, 1) = l - 1
    MsgBox "ww"
    'Cells(l, 2) = TextBox5.Value
    'Cells(l, 3) = TextBox1.Text
    'Cells(l, 4) = ComboBox1.Text
    'Cells(l, 5) = TextBox2.Value
    'Cells(l, 6) = ComboBox2.Text
    'Cells(l, 7) = TextBox3.Text
Else
    'Sheet5.Activate
    'Do
    'l = l + 1
    'Sheet7.Cells(l, 1) = l - 1
     MsgBox "ss"
    'Loop Until Cells(l, 1) = ""
    'Cells(l, 1) = l - 1
    'Cells(l, 2) = TextBox5.Value
    'Cells(l, 3) = TextBox1.Text
   ' Cells(l, 4) = ComboBox1.Text
    'Cells(l, 5) = TextBox2.Value
    'Cells(l, 6) = ComboBox2.Text
    'Cells(l, 7) = TextBox3.Text
    'Sheet7.Activate
    'Do
    'Loop Until Cells(l, 1) = ""
    'Cells(l, 1) = l - 1
    'Cells(l, 2) = TextBox5.Value
   ' Cells(l, 3) = TextBox1.Text
    'Cells(l, 4) = ComboBox1.Text
    'Cells(l, 5) = TextBox2.Value
    'Cells(l, 6) = ComboBox2.Text
    'Cells(l, 7) = TextBox3.Text
    'MsgBox "ww"
    End If
End With

    
End Sub
1.ผมต้องการให้มันหาค่าใน sheet7 โดยที่ไม่ต้องใช้ sheet7.Activate

2.ผมต้องการให้มันใส่ค่าใน Cells นั้นๆ ใน sheet7 โดยที่ไม่ต้องใช้ sheet7.Activate ทำอย่างไรครับ

ขอบคุณล่วงหน้าครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon Apr 28, 2014 9:57 pm
by snasui
:D กรณีไม่ต้องการ Activate สามารถใช้ With...End With เข้ามาช่วยได้ ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

ตัวอย่างการใช้ With...End With wordpress/collect-data-from-multi-sheets/

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Tue Apr 29, 2014 7:53 am
by zonewar123
ผมไม่เข้าใจ โค๊ดเลยครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Tue Apr 29, 2014 8:01 am
by zonewar123
ผมไม่เคยใช้เลยครับ

ลองศึกษาแล้วงง

รู้แค่ว่ามันทำให้โค๊ดสั้นลง

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Wed Apr 30, 2014 1:59 pm
by snasui
zonewar123 wrote:ผมไม่เข้าใจ โค๊ดเลยครับ
zonewar123 wrote:ผมไม่เคยใช้เลยครับ

ลองศึกษาแล้วงง

รู้แค่ว่ามันทำให้โค๊ดสั้นลง
:D การเขียน Code จำเป็นต้องศึกษามาตามลำดับ และต้องปรับ Code ได้บ้าง ติดตรงไหนแล้วค่อยถามกันครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Fri May 09, 2014 11:43 am
by zonewar123

Code: Select all

Private Sub CommandButton1_Click()
With Worksheets("สต็อกวัสดุ").Range("A1:C10")
    Do
    r = r + 1
    Loop Until Cells(r, 1) = ""
    Cells(r, 1) = r - 1
    Cells(r, 2) = TextBox5.Value
    Cells(r, 3) = TextBox1.Text
    Cells(r, 4) = ComboBox1.Text
    Cells(r, 5) = TextBox2.Value
    Cells(r, 6) = ComboBox2.Text
    Cells(r, 7) = TextBox3.Text
    End With
End Sub
ผมต้องการให้มันไปวางไว้ใน sheet สต็อกวัสดุ
ผมจะต้องแก้ไขอย่างไรบ้างครับอาจารย์

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Fri May 09, 2014 1:04 pm
by snasui
:D Code ที่เขี่ยนมาเองนั้นติดปัญหาอะไร ช่วยอธิบายเพิ่มเติมและแนบไฟล์ จะได้ช่วยทดสอบได้ครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Fri May 09, 2014 2:35 pm
by zonewar123

Code: Select all

Private Sub CommandButton1_Click()
With Worksheets("สต็อกวัสดุ").Range("A1:C10")
    Do
    r = r + 1
    Loop Until Cells(r, 1) = ""
    Cells(r, 1) = r - 1
    Cells(r, 2) = TextBox5.Value
    Cells(r, 3) = TextBox1.Text
    Cells(r, 4) = ComboBox1.Text
    Cells(r, 5) = TextBox2.Value
    Cells(r, 6) = ComboBox2.Text
    Cells(r, 7) = TextBox3.Text
    End With
End Sub
จากโค็ดข้างต้น ข้อมูลที่ให้ใส่นั้น มันไม่ไปอยู่ที่ sheet สต็อกวัสดุ

มันกับอยู่ที่หน้าที่เราเริ่ม sheet 1

โค็ดนี้จะอยู่ใน Userform1 นะครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Fri May 09, 2014 10:14 pm
by snasui
:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
With Worksheets("สต็อกวัสดุ")
    Do
    r = r + 1
    Loop Until .Cells(r, 1) = ""
    .Cells(r, 1) = r - 1
    .Cells(r, 2) = TextBox5.Value
    .Cells(r, 3) = TextBox1.Text
    .Cells(r, 4) = ComboBox1.Text
    .Cells(r, 5) = TextBox2.Value
    .Cells(r, 6) = ComboBox2.Text
    .Cells(r, 7) = TextBox3.Text
End With
End Sub

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon May 12, 2014 8:42 am
by zonewar123
ได้แล้วครับ ขอบคุณครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon May 12, 2014 11:17 am
by zonewar123

Code: Select all

Private Sub CommandButton1_Click()
lastrow = Cells(Rows.Count, 3).End(xlUp).Row
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
    With Range("c1:c" & lastrow)
        Set c = .Find(TextBox1.Text, LookIn:=xlValues)
        If TextBox2.Text = "" Then
    
            MsgBox "¡ÃسÒãÊè¨Ó¹Ç¹¤èÐ"
        
        ElseIf Not c Is Nothing Then
            With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
            c.Offset(0, 2).Value = c.Offset(0, 2).Value + CInt(TextBox2.Value)
            MsgBox c.Offset(0, 2)
        End With
        Else
            With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
            Do
                l = l + 1
                Loop Until .Cells(l, 1) = ""
                .Cells(l, 1) = l - 1
                .Cells(l, 2) = TextBox5.Value
                .Cells(l, 3) = TextBox1.Text
                .Cells(l, 4) = ComboBox1.Text
                .Cells(l, 5) = TextBox2.Value
                .Cells(l, 6) = ComboBox2.Text
                .Cells(l, 7) = TextBox3.Text
                MsgBox "ww"
            End With
        End If
        If TextBox2.Value <> "" Then
            With Worksheets("ÃѺÇÑÊ´Ø")
            Do
                r = r + 1
                Loop Until .Cells(r, 1) = ""
                .Cells(r, 1) = r - 1
                .Cells(r, 2) = TextBox5.Value
                .Cells(r, 3) = TextBox1.Text
                .Cells(r, 4) = ComboBox1.Text
                .Cells(r, 5) = TextBox2.Value
                .Cells(r, 6) = ComboBox2.Text
                .Cells(r, 7) = TextBox3.Text
            End With
        End If
    End With
    End With
End Sub
จากโค๊ดข้างต้น

ทำไมเวลาเช็คหา c มันถึงเช็คเฉพาะหน้าชีท ที่เราอยู่ด้วยครับ

ปัญหาคือ?

จะทำยังไงให้มันไปเช็คเอง โดยที่เราไม่จำเป็นต้องอยู่หน้าที่ให้มันเช็ค

เพราะตอนนี้ผมต้องไปหน้า สต็อกวัสดุ เพื่อให้มันเช็ค จะไปชีทลงทะเบียนก็ไม่ได้เพราะมันไม่เช็คมันเช็คเฉพาะชีทที่ทำการเปิดอยู่เท่านั้น

ขอรบกวนผู้รู้ทุกท่านด้วยนะครับ

โค็ดนี้อยู่ที่ Userform1 ครับ

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon May 12, 2014 1:05 pm
by snasui
:D จากบางส่วนของ Code

Code: Select all

lastrow = Cells(Rows.Count, 3).End(xlUp).Row
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
    With Range("c1:c" & lastrow)
ควรเป็น

Code: Select all

With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
    lastrow = .Cells(Rows.Count, 3).End(xlUp).Row
    With .Range("c1:c" & lastrow)
สังเกตหลังบรรทัดที่มี With Worksheets(...) จะต้องใช้เครื่องหมาย . นำหน้า Object ที่เป็นของ With Worksheets(...) นั้น นี่คือประโยชน์ของ With ถ้าเราไม่ใช้ . นำก็แสดงว่าเป็น Object ของชีทปัจจุบัน

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon May 12, 2014 1:37 pm
by zonewar123

Code: Select all

Private Sub CommandButton1_Click()

With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
    lastrow = .Cells(Rows.Count, 3).End(xlUp).Row
    With .Range("b1:b" & lastrow)
        Set c = .Find(TextBox1.Text, LookIn:=xlValues)
        If TextBox2.Text = "" Then
    
            MsgBox "¡ÃسÒãÊè¨Ó¹Ç¹¤èÐ"
        
        ElseIf Not c Is Nothing Then
            c.Offset(0, 2).Value = c.Offset(0, 2).Value + CInt(TextBox2.Value)
            MsgBox c.Offset(0, 2)
        Else
            With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
            Do
                l = l + 1
                Loop Until .Cells(l, 1) = ""
                .Cells(l, 1) = (l - 1) + 1
                .Cells(l, 2) = TextBox1.Text
                .Cells(l, 3) = ComboBox1.Text
                .Cells(l, 4) = TextBox2.Value
                .Cells(l, 5) = ComboBox2.Text
                .Cells(l, 6) = TextBox3.Text
                MsgBox "wks"
            End With
        End If
ทำไมมันถึงไม่เข้าไปเงื่อนไข elseif ครับผม สงสัย?

มันวิ่งเข้า Else อย่างเดียวเลย

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon May 12, 2014 1:52 pm
by snasui
:D ก็ต้องตรวจสอบครับว่าค่าที่เราค้นหาคืออะไร และมีค่านั้นหรือไม่ ตัวแปร c คือค่าที่เราค้นหา

Statement ElseIf Not c Is Nothing Then หมายถึงหากได้มีการกำหนดค่าให้กับตัวแปร c และ cเป็น Range ใด ๆ แล้ว

Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate

Posted: Mon May 12, 2014 2:22 pm
by zonewar123
snasui wrote::D ก็ต้องตรวจสอบครับว่าค่าที่เราค้นหาคืออะไร และมีค่านั้นหรือไม่ ตัวแปร c คือค่าที่เราค้นหา

Statement ElseIf Not c Is Nothing Then หมายถึงหากได้มีการกำหนดค่าให้กับตัวแปร c และ cเป็น Range ใด ๆ แล้ว
ขอบคุณครับ