Page 1 of 1

Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Mon Aug 30, 2021 7:48 am
by wisitsakbenz
เรียน อาจารย์ครับ

ต้องการให้เลือก "โรงเรียน" แล้วคลิกปุ่ม Preview

1.ผลลัพท์ใน Sheet "Forms" จะได้แบบด้านล่าง

[●] โรงเรียน [ ]สถานีตำรวจ [ ]โรงพยาบาล
[ ]ร้านค้า [ ]อนามัย [ ]อื่นๆ

2. ให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

3. อยากให้ "ร้านค้า" และ "อนามัย" และ "อื่นๆ" ขึ้นบรรทัดใหม่ด้วย
[●] โรงเรียน [ ]สถานีตำรวจ [ ]โรงพยาบาล
[ ]ร้านค้า [ ]อนามัย [ ]อื่นๆ

4. ถ้าเลือก อื่นๆ จะมี combobox1 ขึ้นมาให้ใส่ค่า เช่น ใส่ค่า "Test" จะแสดง [ ● ]อื่นๆ - Test

[ ] โรงเรียน [ ]สถานีตำรวจ [ ]โรงพยาบาล
[ ]ร้านค้า [ ]อนามัย [ ● ]อื่นๆ - Test

ต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Code: Select all

Sub Preview()

'Define abbreviations for worksheets
    Dim WI As Worksheet
    Dim WF As Worksheet
    Set WI = Worksheets("Input")
    Set WF = Worksheets("Forms")
      
    
     WF.Range("F1Detail") = "=IF(InputDetail=""โรงเรียน"",""[?] โรงเรียน [   ]สถานีตำรวจ [   ]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""สถานีตำรวจ"",""[   ] โรงเรียน [ ?]สถานีตำรวจ [   ]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""โรงพยาบาล"",""[   ] โรงเรียน [     ]สถานีตำรวจ [ ?]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""ร้านค้า"",""[   ] โรงเรียน [     ]สถานีตำรวจ  [     ]โรงพยาบาล  [ ?]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""อนามัย"",""[   ] โรงเรียน [     ]สถานีตำรวจ  [     ]โรงพยาบาล [   ]ร้านค้า [ ?]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""อื่นๆ"",""[   ] โรงเรียน [     ]สถานีตำรวจ  [     ]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [ ?] อื่น ๆ"",""""))))))"
    
    
    End Sub
    

Re: Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Mon Aug 30, 2021 5:45 pm
by snasui
:D ตัวอย่าง Code ครับ

ที่ชีต Input

Code: Select all

Private Sub OptionButton1_Click()
    If OptionButton1.Value = True Then Sheets("Input").Range("E3").Value = "โรงเรียน"
    strOriginal = "[ ] โรงเรียน"
    strReplace = "[" & Chr(149) & "] โรงเรียน"
    ComboBox1.Visible = False
End Sub
'Other code
ที่ Module1

Code: Select all

Public strOriginal As String
Public strReplace As String
Dim str As String

Sub Preview()
    str = "[ ] โรงเรียน" & _
        Chr(10) & "[ ] สถานีตำรวจ" & _
        Chr(10) & "[ ] โรงพยาบาล" & _
        Chr(10) & "[ ] ร้านค้า" & _
        Chr(10) & "[ ] อนามัย" & _
        Chr(10) & "[ ] อื่น ๆ"
        str = VBA.Replace(str, strOriginal, strReplace)
    'Define abbreviations for worksheets
        Dim WI As Worksheet
        Dim WF As Worksheet
        Set WI = Worksheets("Input")
        Set WF = Worksheets("Forms")
        
'         WF.Range("F1Detail") = "=IF(InputDetail=""โรงเรียน"",""[?] โรงเรียน [   ]สถานีตำรวจ [   ]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""สถานีตำรวจ"",""[   ] โรงเรียน [ ?]สถานีตำรวจ [   ]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""โรงพยาบาล"",""[   ] โรงเรียน [     ]สถานีตำรวจ [ ?]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""ร้านค้า"",""[   ] โรงเรียน [     ]สถานีตำรวจ  [     ]โรงพยาบาล  [ ?]ร้านค้า [   ]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""อนามัย"",""[   ] โรงเรียน [     ]สถานีตำรวจ  [     ]โรงพยาบาล [   ]ร้านค้า [ ?]อนามัย [   ]อื่น ๆ "",IF(InputDetail=""อื่นๆ"",""[   ] โรงเรียน [     ]สถานีตำรวจ  [     ]โรงพยาบาล [   ]ร้านค้า [   ]อนามัย [ ?] อื่น ๆ"",""""))))))"
        WF.Range("F1Detail").Value = str
End Sub

Re: Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Tue Aug 31, 2021 8:11 am
by wisitsakbenz
เรียน อาจารย์ snasui

ในกรณีที่เลือก อื่นๆ จะมี combobox1 ขึ้นมาให้ใส่ค่า เช่น ใส่ค่า "Test" จะแสดง [ ● ]อื่นๆ - Test
มันไม่แสดงให้

ต้องปรับ Code อย่างไรครับ ขอบคุณครับ

หมายเหตุ : อยากให้ ● ใหญ่และหนากว่านี้ได้หรือไม่ครับ ขอบคุณครับ

Code: Select all

Private Sub OptionButton6_Click()
If OptionButton6.Value = True Then Sheets("Input").Range("E3").Value = "อื่นๆ"
    strOriginal = "[ ] อื่นๆ"
    strReplace = "[" & Chr(149) & "] อื่นๆ" & "-" & Sheets("Input").Range("E15").Value
ComboBox1.Visible = True
End Sub

Re: Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Tue Aug 31, 2021 6:08 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub OptionButton6_Click()
    If OptionButton6.Value = True Then Sheets("Input").Range("E3").Value = "อื่นๆ"
    Me.Range("E15").Value = InputBox("Please fill your option.")
    strOriginal = "[ ] อื่นๆ"
    strReplace = "[" & Chr(149) & "] อื่นๆ" & "-" & Sheets("Input").Range("E15").Value
'    ComboBox1.Visible = True
End Sub
คำว่า อื่นๆ คีย์ให้เหมือนกันในทุก ๆ ที่ ไม่เช่นนั้นจะไม่สามารถ Replace ได้

ส่วนการกำหนดให้ตัวอักขระเป็นตัวใหญ่ลองไปค้นและเขียนมาเองดูก่อน ติดแล้วค่อยถามกันต่อครับ

Re: Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Wed Sep 01, 2021 10:56 am
by wisitsakbenz
เรียน อาจารย์ Snasui

พบปัญหาคือ (ดัง Video แนบครับ)
1.เวลาปิดไฟล์เปิดใหม่ แล้วคลิกปุ่ม New > Preview ใน Sheet "Form" จะไม่แสดงข้อมูลที่เลือก Default ไว้ใน Sheet "Input"
2.ใส่ ชื่อ > Preview ใน Sheet "Form" จะไม่แสดงข้อมูลที่เลือก Default ไว้ใน Sheet "Input"
3. ใส่ ชื่อ > เลือก option > ข้อมูลจะแสดง

บางครั้ง user อาจจะเลือกค่าที่ Default ไว้ แต่ output ที่ออกมาไม่แสดงค่าที่เลือก
ต้องแก้ไข หรือ ปรับ Code อย่างไรครับ ขอบคุณครับ

Re: Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Wed Sep 01, 2021 6:06 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Clear()
    With Worksheets("Input")
        .Range("InputName").Value = ""
        .Range("E15").Value = ""
        .OptionButton1.Value = True
        .OptionButton2.Value = False
        .OptionButton3.Value = False
        .OptionButton4.Value = False
        .OptionButton5.Value = False
        .OptionButton6.Value = False
        .OptionButton7.Value = True
        .OptionButton8.Value = False
        .OptionButton9.Value = False
        .OptionButton10.Value = False
    End With
    strOriginal = "[ ] โรงเรียน"
    strReplace = "[" & Chr(149) & "] โรงเรียน"
    strOriginal1 = "[ ] ฟ้า"
    strReplace1 = "[" & Chr(149) & "] ฟ้า"
End Sub
สังเกตการใช้ With...End With เข้ามาช่วย จะได้ลดการเขียน Code ซ้ำ ๆ ลงได้มาก

การตั้งชื่อ Sub Procedure ไม่ควรให้ซ้ำกับคำสำคัญและไม่ให้ซ้ำกับ Method ของ VBA ไม่ควรตั้งชื่อเป็น Clear, Erase, Remove เพราะอาจจะไปซ้ำกับ Method ได้ครับ

Re: Macro : อยากให้มี Symbol "[●]" หน้าแต่ละสถานที่ด้วย

Posted: Thu Sep 02, 2021 7:21 am
by wisitsakbenz
เรียนอาจารย์ snasui

ได้แล้วครับ ขอบคุณอาจารย์มากเลยครับ