Page 1 of 2

เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 05, 2018 12:58 pm
by diamondbom
รบกวนสอบถามหน่อยครับ คือว่าผมต้องการที่จะเปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button (Select Picture)
โดยให้ปรากฏ และเลือรูปภาพจากหน้าต่าง Insert Picture (คล้ายๆกันกับ Insert Picture ของ Excel ) แต่ผมยังไม่รู้ว่าจะเริ่มยังไง
หนังสือที่มีก็ไม่มีตัวอย่าง รบกวนขอคำแนะนำในการเขียน Code ด้วยครับ
ขอบคุณครับ :D

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 05, 2018 1:33 pm
by logic
ลองบันทึกมาโครดูน่าจะได้โค้ดมาปรับใช้ได้ครับ :)

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 05, 2018 3:52 pm
by diamondbom
Sub Macro1()
'
' Macro1 Macro
'

'
ActiveSheet.Shapes.Range(Array("Image1")).Select
End Sub

มาโครมีโค้ดเท่านี้ผมไปต่อไม่ถูกรบกวนแนะนำด้วยครับ อยากได้โปรแกรมประมาณว่าเราสามารถเลือกรูปต่าง Insert Picture (คล้ายๆกันกับ Insert Picture ของ Excel )

ขอบคุณครับ :D

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 05, 2018 4:38 pm
by logic
อ่านแล้วงงครับ

ปกติกำหนดพื้นหลังให้กับภาพอย่างไรก็บันทึกมาโครแบบนั้น

ผมลองทำดูได้ตามนี้ครับ

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
    With Selection.ShapeRange.Fill
        .Visible = msoTrue
        .PresetTextured msoTexturePapyrus
        .TextureTile = msoTrue
        .TextureOffsetX = 0
        .TextureOffsetY = 0
        .TextureHorizontalScale = 1
        .TextureVerticalScale = 1
        .TextureAlignment = msoTextureTopLeft
    End With
    With Selection.ShapeRange.Fill
        .Visible = msoTrue
        .UserPicture "C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg"
        .TextureTile = msoFalse
    End With
End Sub

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 11, 2018 8:10 am
by diamondbom
สวัสดีครับ ตอนนี้ผมแก้ไขโค้ดได้แล้วครับแต่ติดปัญหานิดหน่อยอยากจะรบกวนสอบถามครับ

-กรณีใช้ Commandbutton เปิด UserForm เพื่อเลือกและเปลี่ยนภาพพื้นหลังของ Image กดบันทึกแล้วถาพสามารถเปลียนได้ทันที

-กรณีใช้ Image เปิด UserForm เพื่อเลือกและเปลี่ยนภาพพื้นหลังของ Imageของตัวมันเองกดบันทึกแล้วถาพไม่สามารถเปลียนได้ทันที
ต้องกดออกจาก UserForm ก่อนภาพจึงจะเปลี่ยนให้ พอจะมีวิธีทำให้ภาพเปลี่ยนทันทีใหมครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 11, 2018 8:23 am
by diamondbom
โปรแกรมครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 11, 2018 5:06 pm
by diamondbom
รบกวนสอบถามเพิ่มเติมครับ การใช้งาน Image กินพื้นที่หน่วยความจำเยอะมาก นี่คือเรื่อปรกติใช่ป่าวครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 11, 2018 9:09 pm
by snasui
diamondbom wrote:โปรแกรมครับ
:D ปรับ Code เป็นด้านล่างครับ

Code: Select all

Private Sub Image1_Click()
    UserForm1.Show vbModeless
End Sub
diamondbom wrote:รบกวนสอบถามเพิ่มเติมครับ การใช้งาน Image กินพื้นที่หน่วยความจำเยอะมาก นี่คือเรื่อปรกติใช่ป่าวครับ
เป็นเรื่องปกติครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 11, 2018 9:53 pm
by diamondbom
ขอบคุณครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 12, 2018 5:42 pm
by diamondbom
รบกวนสอบถามเพิ่อมเติมหน่อครับ เนื่องจาก Image มีการใช้พื้นที่เยอะมึงเปลี่ยนมาใช้รูปภาพแทน
อยากสอบถามเกี่ยวกับการใช้โค้ดใช้ภาพอยู่กึ่งกลางเซลที่เรา Merge ไว้น่ะครับ
(กึ่งกลางเหมือนกับกรณีที่เราใช้ Image ใน Mode Zoom)
ขอบคุณครับ :D

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 12, 2018 5:43 pm
by diamondbom
โปรแกรมครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Sat Jan 13, 2018 12:50 pm
by diamondbom
diamondbom wrote: Fri Jan 12, 2018 5:42 pm รบกวนสอบถามเพิ่อมเติมหน่อครับ เนื่องจาก Image มีการใช้พื้นที่เยอะจึงเปลี่ยนมาใช้รูปภาพแทน
อยากสอบถามเกี่ยวกับการใช้โค้ดใช้ภาพอยู่กึ่งกลางเซลที่เรา Merge ไว้น่ะครับ
(กึ่งกลางเหมือนกับกรณีที่เราใช้ Image ใน Mode Zoom)
ขอบคุณครับ :D

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Sat Jan 13, 2018 1:12 pm
by snasui
diamondbom wrote: Fri Jan 12, 2018 5:42 pm เนื่องจาก Image มีการใช้พื้นที่เยอะมึงเปลี่ยนมาใช้รูปภาพแทน
🤣 Image กับรูปภาพคือ Object ชนิดเดียวกันครับ แต่หากเป็น ActiveX Control หรือ Form Control กับ Image จึงจะเป็นคนละ Object ในการเขียน Code ให้เป็นมาตรฐานเราควรใช้ Control แบบใดแบบหนึ่งแทน Image เนื่องจากสร้างมาเพื่อการนี้โดยเฉพาะ ยกเว้นจะเขียนแบบต้องการให้สวยงามเป็นหลักครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Mon Jan 15, 2018 7:19 am
by diamondbom
ขอบคุณครับอาจารย์ ในที่นี้ผมต้องการให้ commandbutton เป็นตัว control และออกแบบให้รูปภาพเป็น object แสดงผลบนเซลในรูปแบบกึ่งกลางเซล(เซลที่ Merge เอาไว้เป็นแนวยาว)ประมาณแสดงรูปเป็น header ของ Report รบกวนอาจารยญ์ช่วยชี้แนะด้วยครับ :D

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Mon Jan 15, 2018 3:05 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Dim r As Range, imgIcon As Object
Set r = Range("a5")
'Other code...    
Set imgIcon = ActiveSheet.Pictures.Insert(UserForm1.AddPic.Caption)
With imgIcon
    .Left = (r.Left + (r.MergeArea.Width - .Width)) / 2
    .Height = r.MergeArea.Height
End With
ในโอกาสถัดไปให้แนบไฟล์โปรแกรมที่ได้ลองปรับมาเองแล้วด้วยจะได้ช่วยตอบต่อไปจากนั้นครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 25, 2018 8:24 am
by diamondbom
สวัสดีครับอาจารย์ จากโปรแกรมในไฟล์แนบผมรบกวนขอสอบถามเพิ่มเติมครับ
1.เมื่อมีการเปลี่ยนรูปตำแหน่งก็จะเปลี่ยนไปไม่อยู่กึ่งกลางเซลล์ที่ Merge ไว้เหมือนเคย ผมควรแก้ไขอย่างไรครับ
2.เมื่อมีการปรับ column width และ row height รูปภาพไม่ปรับขนาดตาม รบกวนขอคำแนะนำด้วยครับอาจารย์

ขอบคุณครับ :D

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 25, 2018 5:58 pm
by snasui
:D Code ทีแนบมาไม่ตรงกับที่ผมแจ้งไปครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 25, 2018 6:31 pm
by diamondbom
ตรง /2 ใช่ป่าวครับอาจารย์ ผมใช้แล้วภาพไม่อยู่กึ่งกลางน่ะครับผมเลยลองปรับโค้ดดู
ในไฟล์แนปโค้ดตรงครับอาจารย์แต่ภาพจะอยู่ชิดซ้ายนิดหน่อยครับ

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Thu Jan 25, 2018 10:46 pm
by snasui
diamondbom wrote: Thu Jan 25, 2018 6:31 pm ตรง /2 ใช่ป่าวครับอาจารย์ ผมใช้แล้วภาพไม่อยู่กึ่งกลางน่ะครับผมเลยลองปรับโค้ดดู
:thup:

:D ปรับให้สลับบรรทัดกันใหม่ตามด้านล่างครับ

Code: Select all

Set imgIcon = ActiveSheet.Pictures.Insert(UserForm1.AddPic.Caption)
With imgIcon
    .Height = r.MergeArea.Height
    .Left = (r.Left + (r.MergeArea.Width - .Width)) / 2
End With

Re: เปลี่ยนพื้นหลังของ Image ด้วยคำสั้งจาก Command button

Posted: Fri Jan 26, 2018 7:59 am
by diamondbom
:D ได้แล้วครับอาจารย์ เมื่อมีการเพิ่มภาพจะอยู่ตรงกลางพอดีแล้วครับ
รบกวนขอสอบถามอาจารย์เพิ่มเติมครับกรณีมีการปรับ column width และ row height รูปภาพไม่ปรับขนาดตาม
เราสามารถตั้งค่าให้รูปภาพปรับขนาดตามเซลล์ไดใหมครับ รบกวนขอคำแนะนำด้วยครับอาจารย์
ขอบคุณครับ