Page 1 of 1
ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Mon Dec 12, 2016 12:10 am
by sharp
สวัสดีครับอยากให้รบกวนช่วยดู VBA หน่อยครับว่าผมจะใช้คำสั่งไหนแทน Range("C8").Select ครับ
โดยผมเขียนว่าถ้าเกิดแถวบนของactivecellมีค่าเป็น เนื้อหรือไก่ให้ขึ้นในrangeที่กำหนดแต่ผมจะเขียนยังไงครับให้มันไปขึ้นในคอลัมน์ใหม่เองโดยที่ไม่ต้องกำหนดRangeครับ ขอบคุณครับ
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Mon Dec 12, 2016 5:09 pm
by DhitiBank
ลองปรับโค้ดเป็นแบบนี้ครับ
Code: Select all
Private sName As String
Private r As Range
Private Sub CommandButton1_Click()
sName = "เนื้อ"
Call InsertSName
End Sub
Private Sub CommandButton2_Click()
sName = "หมู"
Call InsertSName
End Sub
Private Sub CommandButton3_Click()
sName = "ไก่"
Call InsertSName
End Sub
Public Sub InsertSName()
On Error Resume Next
Set r = Range("b8:h19").SpecialCells(xlCellTypeBlanks).Range("a1")
If Err.Number = 1004 Then
MsgBox "ไม่พบพื้นที่ว่าง"
Exit Sub
ElseIf r.Address(0, 0) <> "B8" And r.Offset(20, -1).End(xlUp).Row <> 19 Then
Set r = r.Offset(20, -1).End(xlUp).Offset(1, 0)
End If
r.Value = sName
If r.Row = 19 Then
If r.Column <> 8 Then _
r.End(xlUp).Offset(0, 1).Select
Else
r.Offset(1, 0).Select
End If
End Sub
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Mon Dec 12, 2016 11:30 pm
by sharp
ขอบคุณมากครับที่เสียสละเวลาตอบคำถามแต่ยังไม่ได้ผลลัพธ์ที่ต้องการครับหากแต่อยากให้มันขึ้นคอลัมน์ใหม่เองเมื่อเป็นข้อมูลใหม่ครับตามประมาณนี้ในรูปภาพครับ
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Wed Dec 14, 2016 12:34 am
by DhitiBank
ลองปรับโค้ดโปรซีเยอร์
InsertSName
เป็นแบบนี้ครับ
Code: Select all
Public Sub InsertSName()
Dim i As Integer, j As Integer, k As Byte
Set r = ActiveSheet.Range("i8").End(xlToLeft)
If r.Value = sName Then
For i = 1 To 2
If k = 1 Or r.Offset(, i - 1).Column = 9 Then Exit For
For j = 1 To 12
If r.Offset(j - 1, i - 1).Value = "" Then
r.Offset(j - 1, i - 1).Value = sName
k = k + 1
Exit For
End If
Next j
Next i
Else
If r.Offset(, 1).Column = 9 Then Exit Sub
r.Offset(, 1).Value = sName
End If
End Sub
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Wed Dec 14, 2016 8:24 am
by ZEROV
สำนวนไทย "เส้นผมบังภูเขา"คงใช้ได้ดีกับกรณีนี้
@ Module1
Code: Select all
Global refCell As Range
Global xStr As String
Global rOffset As Single
@Sheet1 Module
Code: Select all
Private Sub CommandButton1_Click()
xStr = CommandButton1.Caption
GetStr
End Sub
Private Sub CommandButton2_Click()
xStr = CommandButton2.Caption
GetStr
End Sub
Private Sub CommandButton3_Click()
xStr = CommandButton3.Caption
GetStr
End Sub
Private Sub CommandButton4_Click()
Set refCell = [d8]
xStr = ""
rOffset = 0
refCell.CurrentRegion.ClearContents
End Sub
Private Sub GetStr()
If xStr <> refCell.Value Then
rOffset = 0
Set refCell = refCell.Offset(0, 1)
End If
refCell.Offset(rOffset, 0).Value = xStr
rOffset = rOffset + 1
End Sub
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Wed Dec 14, 2016 12:39 pm
by sharp
ขอบคุณคุณ DhitiBank มากๆเลยครับได้ผลลัพธ์ตามต้องการเลยครับเหลือไปปรับแต่งเอาเองให้เหมาะสมกับการใช้งานต่อไปซึ่งจะเรียนรู้และปรับแก้เองให้ได้แล้วครับ _/\_ กราบขอบคุณมากครับ
และขอบคุณคุณ ZEROV ด้วยคนมากๆครับแต่ทำไมพอรันทีแรกได้ผลลัพธ์ตามต้องการพอปิดแล้วมาลองใหม่ดัน Error ตรงนี้ครับ If xStr <> refCell.Value Then ตรงส่วนของ Private Sub GetStr()
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Wed Dec 14, 2016 3:34 pm
by ZEROV
sharp wrote:ขอบคุณคุณ DhitiBank มากๆเลยครับได้ผลลัพธ์ตามต้องการเลยครับเหลือไปปรับแต่งเอาเองให้เหมาะสมกับการใช้งานต่อไปซึ่งจะเรียนรู้และปรับแก้เองให้ได้แล้วครับ _/\_ กราบขอบคุณมากครับ
และขอบคุณคุณ ZEROV ด้วยคนมากๆครับแต่ทำไมพอรันทีแรกได้ผลลัพธ์ตามต้องการพอปิดแล้วมาลองใหม่ดัน Error ตรงนี้ครับ If xStr <> refCell.Value Then ตรงส่วนของ Private Sub GetStr()
กดปุ่ม "ล้างข้อมูล" ก่อน เพื่อรีเซ็ทค่าตัวแปรต่างๆ
Re: ทำอย่างไรให้ค่าไปในคอลัมน์ใหม่เมื่อเจอเงื่อนไขจากการใช้ IF
Posted: Fri Dec 16, 2016 1:56 am
by sharp
ZEROV wrote:sharp wrote:ขอบคุณคุณ DhitiBank มากๆเลยครับได้ผลลัพธ์ตามต้องการเลยครับเหลือไปปรับแต่งเอาเองให้เหมาะสมกับการใช้งานต่อไปซึ่งจะเรียนรู้และปรับแก้เองให้ได้แล้วครับ _/\_ กราบขอบคุณมากครับ
และขอบคุณคุณ ZEROV ด้วยคนมากๆครับแต่ทำไมพอรันทีแรกได้ผลลัพธ์ตามต้องการพอปิดแล้วมาลองใหม่ดัน Error ตรงนี้ครับ If xStr <> refCell.Value Then ตรงส่วนของ Private Sub GetStr()
กดปุ่ม "ล้างข้อมูล" ก่อน เพื่อรีเซ็ทค่าตัวแปรต่างๆ
ขอบคุณมากๆครับ _/\_