Page 1 of 1

ไม่ให้ใส่ข้อมูลทับ cell ที่มีข้อมูลอยู่แล้ว

Posted: Tue Jul 10, 2018 12:07 pm
by sakajohn
รบกวนสอบถามครับ
ผมต้องการตรวจสอบว่า ถ้าเซลนั้นมีข้อมูลอยู่แล้วไม่สามารถบันทึกข้อมูลทับลงไปได้ เราต้องกำหนดอย่างไรครับ จะใช้ร่วมกับ Code นี้ครับ

Code: Select all

If Application.CountA(Range("AC17")) <> 0 Then
    MsgBox "ไม่ต้อง ใสชื่อ่ผู้ตรวจสอบงาน"
End If
Dim row As Integer
row = 10
If Cells(row, 30).Value <> "" Then
ActiveSheet.Unprotect Password:="1234"
    Application.Goto Reference:="OFFSET(R10C30,0,12,1,2)"
    Selection.Copy
    Workbooks.Open Filename:="\\ACCOUNT\Data (D)\SALE\DataBase.xlsx"
    ThisWorkbook.Activate
    Application.Goto Reference:= _
        "OFFSET('[DataBase.xlsx]Sheet1'!R1C1,MATCH(R10C30,INDEX('[DataBase.xlsx]Sheet1'!R2C1:R5000C1,0),0),40)"
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
   End If
เป้าหมายคือ ปุ่มคำสั่งนี้จะทำหน้าที่บันทึกข้อมูลเกี่ยวกับเวลาการเก็บงานของงานแต่ละ JOB เมื่อกดบันทึก เวลาจะไปเก็บไว้ในDataBase.xlsx ผมไม่ต้องการให้มีการกดปุ่มซ้ำได้เพราะเวลาใหม่ก็จะไปทับข้อมูลเก่าครับ ต้องการให้กดได้ครั้งเดียวในแต่ละ JOB ครับ

Re: ไม่ให้ใส่ข้อมูลทับ cell ที่มีข้อมูลอยู่แล้ว

Posted: Tue Jul 10, 2018 3:58 pm
by eyepop99
Code ตัวอย่างการซ่อน และ ไม่ซ่อนปุ่มนะครับ

ซ่อน = Sheets("AEW").Shapes("Button 2").Visible = msoFalse
ไม่ซ่อน = Sheets("AEW").Shapes("Button 2").Visible = msoTrue

ตรงที่ highlight สีแดงคือชื่อปุ่มนะครับ
ส่วนจะซ่อน หรือไม่ซ่อนใช้ IF Check จาก file Database.xls
ถ้าทำขั้นตอนไหนแล้วก็ให้ซ่อน
ขั้นตอนไหนยังไม่ได้ทำก็ให้ แสดงปกติ

Re: ไม่ให้ใส่ข้อมูลทับ cell ที่มีข้อมูลอยู่แล้ว

Posted: Tue Jul 10, 2018 4:59 pm
by sakajohn
ขอบคุณครับ จะลองทำดูครับ

Re: ไม่ให้ใส่ข้อมูลทับ cell ที่มีข้อมูลอยู่แล้ว

Posted: Tue Jul 10, 2018 7:04 pm
by sakajohn
ตอนนี้ผมลองทำโดยเขียนโค๊ด

Code: Select all

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Set Target = Range("AC10")

If Application.CountA(Range("AE15")) = 0 Then
 Sheets("AEW").Shapes("Button 2").Visible = msoTrue 'ไม่ซ่อน
 Else
 Sheets("AEW").Shapes("Button 2").Visible = msoFalse 'ซ่อน

 End If

End Sub
ตอนนี้ที่ เซล AE15 ผมใส่สูตร Vlookup เพื่อดึงข้อมูลมาแสดงครับ สิ่งที่ต้องการคือ
1. ถ้ามีค่าจาก DATABASE แสดงในช่อง AE15 ให้ปุ่มหายครับ ตอนนี้ไม่มีค่าปุ่มก็หายครับ
2. ถ้าไม่มีค่า ให้ปุ่มแสดงครับ

Re: ไม่ให้ใส่ข้อมูลทับ cell ที่มีข้อมูลอยู่แล้ว

Posted: Tue Jul 10, 2018 7:14 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

If Range("AE15").Value = "" Then