:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

VBA พิมพ์ข้อความ และกดลบขอความไม่ได้

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: VBA พิมพ์ข้อความ และกดลบขอความไม่ได้

Re: VBA พิมพ์ข้อความ และกดลบขอความไม่ได้

#4

by snasui » Fri Apr 24, 2015 4:26 pm

:D ลองปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ

Re: VBA พิมพ์ข้อความ และกดลบขอความไม่ได้

#3

by setsunatop » Thu Apr 23, 2015 11:03 pm

ขอบคุณมากครับ

ข้อที่ 1 ใช้งานได้ครับผม

แต่ข้อที่ 2 เวลาผมเปลี่ยนค่าแล้ว ค่าในช่อง wage ไม่เปลี่ยนตามครับ

ตัวอย่างเช่น ถ้าเราเลือกให้ในช่อง Customer เป็นร้านดิเรกค้าข้าว ค่าในช่อง Distance จะเป็น 31.1 โดยอัตโนมัติ และให้ช่อง Demand เป็น 13001 คำตอบ ช่อง Wage จะเป็น 250

สิ่งที่ต้องการคือ ถ้าผมเปลี่ยนค่าใช่อง Distance ให้เป็น 250 ค่าในช่อง Wage จะต้องเปลี่ยนเป็น 300 ตามเกณท์ของระยะทาง ในชีด WAGE

Re: VBA พิมพ์ข้อความ และกดลบขอความไม่ได้

#2

by snasui » Wed Apr 22, 2015 10:15 pm

setsunatop wrote:1.ในช่อง Customer ไม่สามารถพิมพ์ได้
ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub cbCustomer_Change()
    If cbCustomer.ListIndex <> -1 Then
        idxCust = cbCustomer.ListIndex + 1
        tbDistance.Text = CStr(Distance(idxCust, 1))
        cDisttance = CLng(Distance(idxCust, 1))
    End If
End Sub
setsunatop wrote:2.ในช่อง Demand กับ Distance ไม่สามารถลบข้อมูลให้ให้ไปทั้งหมดได้ครับ ถ้าลบแล้วมันจะขึ้นดีบัค
ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub tbDemand_Change()
    Dim CustDemand As Long
    Dim UB As Long
    Dim LB As Long
    Dim cVT As Long
    If IsNumeric(tbDemand.Text) Then
        CustDemand = CLng(tbDemand.Text)
    End If
    ...Other code...    
 

VBA พิมพ์ข้อความ และกดลบขอความไม่ได้

#1

by setsunatop » Wed Apr 22, 2015 9:36 pm

1.ในช่อง Customer ไม่สามารถพิมพ์ได้
2.ในช่อง Demand กับ Distance ไม่สามารถลบข้อมูลให้ให้ไปทั้งหมดได้ครับ ถ้าลบแล้วมันจะขึ้นดีบัค
ความต้องการ = ผมต้องการให้มันสามารถพิมพ์ได้ด้วยครับแล้วโปรแกรมสามารถหาข้อมูลได้เหมือนเดิม

Code: Select all

'Customer Variables*******
Dim idxCust As Integer
Dim Distance()
Dim CustomerNumber As Integer
Dim cDisttance As Long

'Wage Variables *********
Dim FromDist()
Dim ToDist()
Dim SixWT()
Dim TenWT()
Dim TenWCT()

'Vehicle Types***********
Dim wFrom()
Dim wTo()
Dim vType()
Dim cWage As Long

'History Variables*********
Dim hDate()
Dim hEmp()
Dim hCust()
Dim hDem()
Dim hDist()
Dim hWage()

'Employess (Truck Driver)**
Dim vEmp() 'Employee Code
Dim vEmpName() 'Employee Name
Dim vEmpDist() 'Total Employee Distance
Dim vEmpWage() 'Total Wage of Employee

'Balance Job Variables******
Dim OriginalDistArray()
Dim DistArray()     'Total Distance of Each Employee (Truck Driver) be arranged low to hight.
Dim IndexArray()  'Index of Employee (Truck Driver) Data
Dim DailyEmpArray() 'Status of Employee that have been set by checkboxes

Private Sub cbCustomer_Change()
    idxCust = cbCustomer.ListIndex + 1
   tbDistance.Text = CStr(Distance(idxCust, 1))
   cDisttance = CLng(Distance(idxCust, 1))
End Sub

Private Sub tbDemand_Change()
    Dim CustDemand As Long
    Dim UB As Long
    Dim LB As Long
    Dim cVT As Long
    CustDemand = CLng(tbDemand.Text)
     'Find Vehicle Type
     For i = 1 To UBound(wFrom, 1)
        LB = wFrom(i, 1)
        UB = wTo(i, 1)
        'MsgBox CStr(LB) & " " & CStr(UB)
        If ((LB <= CustDemand) And (UB >= CustDemand)) Then
            If (i = 1) Then
                'MsgBox "6 Wheel Truck"
                lbVehicleType.Caption = "6 Wheel Truck"
                cVT = 0
            End If
             If (i = 2) Then
                'MsgBox "10 Wheel Truck"
                lbVehicleType.Caption = "10 Wheel Truck"
                cVT = 1
            End If
             If (i = 3) Then
                'MsgBox "10 Wheel with Container Truck"
                 lbVehicleType.Caption = "10 Wheel with Container Truck"
                 cVT = 2
            End If
        End If
    Next
    'Find Wage
      For i = 1 To UBound(FromDist, 1)
        LB = FromDist(i, 1)
        UB = ToDist(i, 1)
        If ((LB <= cDisttance) And (UB >= cDisttance)) Then
            If (cVT = 0) Then '6 Wheel Truck
               cWage = SixWT(i, 1)
            End If
            If (cVT = 1) Then '10 Wheel Truck
                cWage = TenWT(i, 1)
            End If
            If (cVT = 2) Then '10 Wheel with Container Truck
                cWage = TenWCT(i, 1)
            End If
            lbWage.Caption = CStr(cWage)
        End If
     Next
    
    
    
End Sub

Private Sub UserForm_Initialize()
   initializeprogram
End Sub


Private Sub initializeprogram()
  tbRecord.Text = tbRecord.Text & "Customer" & "                                                                                       " & "Demand" & "                 " & "Distance" & "                  " & "Wage" & vbNewLine
 'Update Variables You Can Adding in New Record Here***********************
    CustomerNumber = 271 'Look at  the last row of customer and fill it here...
    Worksheets("CUSTOMER").Activate
    'Read Combobox Customer
    Me.cbCustomer.List = Worksheets("CUSTOMER").Range("B2:B" & CustomerNumber).Value
    
    'Read Customer Distance to Array
    ReDim Preserve Distance(1 To CustomerNumber, 1)
    For i = 2 To CustomerNumber
        Distance(i - 1, 1) = CStr(Worksheets("CUSTOMER").Cells(i, 3))
    Next
    
    'Read Wage Table to Arrays***********************
    ReDim Preserve FromDist(1 To 11, 1)
    ReDim Preserve ToDist(1 To 11, 1)
    ReDim Preserve SixWT(1 To 11, 1)
    ReDim Preserve TenWT(1 To 11, 1)
    ReDim Preserve TenWCT(1 To 11, 1)
    
    For i = 4 To 14
        FromDist(i - 3, 1) = CStr(Worksheets("WAGE").Cells(i, 1))
        ToDist(i - 3, 1) = CStr(Worksheets("WAGE").Cells(i, 2))
        SixWT(i - 3, 1) = CStr(Worksheets("WAGE").Cells(i, 3))
        TenWT(i - 3, 1) = CStr(Worksheets("WAGE").Cells(i, 4))
        TenWCT(i - 3, 1) = CStr(Worksheets("WAGE").Cells(i, 5))
    Next
    
    'Read Vehicle Types Table to Arrays*****************
    ReDim Preserve wFrom(1 To 3, 1)
    ReDim Preserve wTo(1 To 3, 1)
    ReDim Preserve vType(1 To 3, 1)
    For i = 4 To 6
        wFrom(i - 3, 1) = CStr(Worksheets("VEHICLE").Cells(i, 1))
        If CStr(Worksheets("VEHICLE").Cells(i, 2)) = "" Then
            wTo(i - 3, 1) = "2147483647" 'Integer 32767   Long 2147483647
        Else
            wTo(i - 3, 1) = CStr(Worksheets("VEHICLE").Cells(i, 2))
        End If
        
        vType(i - 3, 1) = CStr(Worksheets("VEHICLE").Cells(i, 3))
    Next
    
     'Combobox Day: Job Order Section **********************************
        With cbDay
            For i = 1 To 31
                .AddItem CStr(i)
            Next i
        End With
        'Combobox Month
        With cbMonth
            For i = 1 To 12
                .AddItem CStr(i)
            Next i
        End With
        'Combobox Year
        With cbYear
            For i = 2556 To 2600
                .AddItem CStr(i)
            Next i
        End With
        
End Sub

Attachments
newschedule.xlsm
(125.55 KiB) Downloaded 12 times

Top