- ©«¤l
- 5923
- ¥DÃD
- 13
- ºëµØ
- 1
- ¿n¤À
- 5986
- ÂI¦W
- 0
- §@·~¨t²Î
- win10
- ³nÅ骩¥»
- Office 2010
- ¾\ŪÅv
- 150
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥xÆW°ò¶©
- µù¥U®É¶¡
- 2010-5-1
- ³Ì«áµn¿ý
- 2022-1-23
|
¦^´_ 22# jeffrey628litw
3.µM«á¦]¬°¿z¿ï«á·|¶W¹L4±iImage
ComboBox1 ¥kÃä·s¼W¤@ComboBox3
ComboBox2 ¥kÃä·s¼W¤@ComboBox4
- Option Explicit '±j¨î ¼Ò²ÕªºÅܼƥ²¶·n Dimªº«Å§i,·|¨Ïµ{¦¡©ö©ó°»¿ù
- '¼Ò²Õ³»ºÝ¤W DimªºÅÜ¼Æ ¥i¦bUserForm1ªº¥þ³¡µ{¦¡¤¤¨Ï¥Î
- Dim Sh(1 To 2) As Worksheet, D As Object, D1 As Object, xTempPicture As String
- Dim AR_Image(), AR_TexTbox(), AR_Label(), xName As String
- Private Sub UserForm_Initialize()
- Dim A As Range, S As String, E As Variant
- Set Sh(1) = ThisWorkbook.Sheets("Database") '¤u§@ªí¦p¦³Åܰʮɦb¦¹×§ï§Y¥i
- Set Sh(2) = ThisWorkbook.Sheets.Add
- AR_Image = Array(Image1, Image2, Image3, Image4)
- AR_TexTbox = Array(TextBox1, TextBox2, TextBox3, TextBox4)
- AR_Label = Array(Label1, Label4, Label6, Label8)
- xTempPicture = "D:\NoPicture.jpg"
- xName = "D:\temp.jpg"
- ·Ó¤ùExport Sh(1).Range("F2"), xTempPicture '¸m¤J"¨S¦³¹Ï¤ù"ÀÉ ·í§@¹w³]¹Ï¤ù¤Î¨S¦³¹Ï¤ù
- ComboBox³]©w ComboBox1, D
- For E = 0 To UBound(AR_Image)
- With AR_Image(E) '³]©w¹Ï¤ùªºÅã¥Ü³]¼Ò¦¡ '***** ½Ð¦Û¦æ½Õ¾ã******
- .Picture = LoadPicture(xTempPicture)
- .PictureAlignment = fmPictureAlignmentCenter ' *** 0,1,2,3,4
- .PictureSizeMode = 3 'fmPictureSizeModeClip ' *** 0,1,3
- End With
- AR_TexTbox(E).MultiLine = True '«ü©w±±¨î¶µ¬O§_±µ¨ü¨ÃÅã¥Ü¦h¦æ¤å¦r¡C
- AR_Label(E).WordWrap = False '¤º®e¦b¦æ¥½¬O§_¦Û°Ê´«¦æ
- Next
- End Sub
- '***********************************************************************************
- '¥H¤U¬°¶}±ÒUserForm1®É·|¦Û°Ê¶}±Ò1¤u§@ªí¡A¥H¤Uµ{¦¡¦bÃö³¬UserForm1®É·|¦Û°ÊÃö³¬¤u§@ªí
- Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
- Application.DisplayAlerts = False
- Sh(2).Delete
- Kill xTempPicture
- Kill xName ' "D:\temp.jpg"
- Application.DisplayAlerts = True
- End Sub
- '***********************************************************************************
- Private Sub ComboBox1_Change()
- Dim A As Variant, i As Integer, S As String, ii As Integer
- ²M¹Ï
- With ComboBox1
- If .ListIndex = -1 Then ComboBox2.Clear: ComboBox3.Clear: ComboBox4.Clear: Exit Sub
- If IsArray(D(.Value)) Then A = D(.Value)(0) Else A = D(.Value)
- ComboBox¶³]©w ComboBox3, A
- ComboBox³]©w ComboBox2, D1
- If ComboBox3.Enabled Then ComboBox3.ListIndex = 0
- End With
- End Sub
- Private Sub ComboBox2_Change()
- Dim A As Variant
- With ComboBox2
- ²M¹Ï
- If .ListIndex = -1 Then Exit Sub
- A = D1(.Value)
- If IsArray(D1(.Value)) Then A = D1(.Value)(0) Else A = D1(.Value)
- ComboBox¶³]©w ComboBox4, A
- If ComboBox4.Enabled Then ComboBox4.ListIndex = 0
- End With
- End Sub
- Private Sub ComboBox3_Change()
- ²M¹Ï
- ComboBox4.Clear
- If ComboBox3.ListIndex > -1 Then ³]¹Ï ComboBox1, ComboBox3, D
- End Sub
- Private Sub ComboBox4_Change()
- ²M¹Ï
- If ComboBox4.ListIndex > -1 Then ³]¹Ï ComboBox2, ComboBox4, D1
-
- End Sub
- Private Sub ²M¹Ï()
- Dim i As Integer
- For i = 0 To UBound(AR_Label)
- AR_Label(i).Caption = "¨S¦³¦¹¹Ï¤ù"
- AR_TexTbox(i).Text = ""
- AR_Image(i).Picture = LoadPicture(xTempPicture) 'ªí³æ¹w³]ªº¹Ï¤ù ¬° Databasse ¤u§@ªí¤¤ªº F3 Àx¦s®æ¹Ï¤ù
- Next
- End Sub
- Private Sub ³]¹Ï(ComBo As MSForms.ComBobox, ComBobox As MSForms.ComBobox, D As Object)
- Dim P As Object, i As Integer, ii As Integer
- With ComBobox
- For i = .ListIndex * 4 To (.ListIndex + 1) * 4 - 1
- If i <= UBound(D(ComBo.Value)(0)) Then
- AR_Label(ii).Caption = D(ComBo.Value)(1)(i)
- AR_TexTbox(ii).Text = D(ComBo.Value)(2)(i)
- Set P = D(ComBo.Value)(0)(i)
- ·Ó¤ùExport P, xName
- AR_Image(ii).Picture = LoadPicture(xName) 'ªí³æÅã¥Ü¹Ï¤ù
- ii = ii + 1
- End If
- Next
- End With
- End Sub
- Private Sub ComboBox¶³]©w(ComBo As MSForms.ComBobox, S As Variant)
- Dim i As Integer
- With ComBo
- .Clear
- Debug.Print .Name
- ComBo.Enabled = IsArray(S)
- If Not IsArray(S) Then Exit Sub
- For i = 0 To UBound(S) Step 4
- .AddItem Int((i + 1) / 4) + IIf(4 Mod (i + 1) >= 0, 1, 0)
- Next
- End With
- End Sub
- Private Sub ComboBox³]©w(ComBo As MSForms.ComBobox, D As Variant)
- Dim A As Range, S As String, E As Variant, i As Integer, ii As Integer, iii As Integer, AR, AR1()
- Dim xShape As Shape
- Set D = CreateObject("Scripting.Dictionary")
- For Each A In Sh(1).Range(Sh(1).Range("E3"), Sh(1).Range("E3").End(xlDown))
- If ComBo.Name = "ComboBox1" Then
- S = Replace(Trim(A), vbLf, Space(1))
- Else
- If ComboBox1 <> Replace(Trim(A), vbLf, Space(1)) Or Trim(A.Offset(, 5)) = "" Then GoTo Net
- S = Replace(Trim(A.Offset(, 5)), vbLf, Space(1)) '´«¦æ¦r¤¸ §ï¦¨ Space(1)
- End If
- Set xShape = ¹Ï¤ùÀˬd(A.Offset(, 1).Address)
- If Not xShape Is Nothing Then
- If D.EXISTS(S) Then
- If IsArray(D(S)) Then
- AR = D(S)
- iii = UBound(AR(0)) + 1
- For ii = 0 To UBound(AR)
- ReDim AR1(0 To iii)
- For i = 0 To UBound(AR1)
- If ii = 0 Then If i < UBound(AR1) Then Set AR1(i) = AR(ii)(i) Else Set AR1(i) = xShape
- If ii = 1 Then If i < UBound(AR1) Then AR1(i) = AR(ii)(i) Else AR1(i) = A.Text
- If ii = 2 Then If i < UBound(AR1) Then AR1(i) = AR(ii)(i) Else AR1(i) = Sh(1).Cells(A.Row, "B").Text
- Next
- AR(ii) = AR1
- Next
- D(S) = AR
- Else
- D(S) = Array(Array(xShape), Array(A.Text), Array(Sh(1).Cells(A.Row, "B").Text))
- End If
- Else
- D(S) = Array(Array(xShape), Array(A.Text), Array(Sh(1).Cells(A.Row, "B").Text))
- End If
- Else
- If Not D.EXISTS(S) Then D(S) = False
- End If
- Net:
- Next
- ComBo.Clear
- If D.Count > 0 Then ComBo.List = D.KEYS
- End Sub
- Private Function ¹Ï¤ùÀˬd(xPicture As String) As Object
- Dim S As Shape
- Set ¹Ï¤ùÀˬd = Nothing
- For Each S In Sh(1).Shapes
- '*************************************************
- 'Shapeª«¥ó¬O·Ó¤ù¥B¦ì¸m¬OD(ComboBox1.Value).Address)
- If S.Type = msoPicture And S.TopLeftCell.Address = xPicture Then
- Set ¹Ï¤ùÀˬd = S
- Exit For
- End If
- '***************************************************
- Next
- End Function
- Private Sub ·Ó¤ùExport(P As Object, xName As String)
- If xName <> "D:\temp.jpg" Then
- P.CopyPicture
- Else
- P.Copy
- End If
- With Sh(2).ChartObjects.Add(1, 1, P.Width, P.Height) '·s¼W¹Ïªí
- .Chart.Paste '¶K¤W¹Ï¤ù
- .Chart.Export xName '¶×¥X¹Ïªí¡A¼È¦s¹Ï¤ù
- .Delete '§R°£¹Ïªí
- End With
- End Sub
½Æ»s¥N½X |
|