[英]"Error '424' Object required" when trying to display "Temp.jpg" in an Image Box (imgRpts1)
我正在处理的Application
在Excel Workbook
前面Runs
,因此User
无法直接访问各个Worksheets
。 主要关注的领域是Reports Worksheets
,我想在其中Display
等效于Worksheet
的Print Preview
,所有data
都填充在Worksheet
上。 我有 4 个ComboBoxes configured as DDLs
和一个Submit Button
,实现选择所需Worksheet
的功能,与相应Worksheets
关联的Named Ranges
,并在这些Worksheets
上填充适当的cells
(参见下图)。 Worksheets
和Ranges
的所有Variables
都在WB_Initialization
Module
中Declared
为Global Variables
,并在UserForm_Initialize()
中Set
!
Choose Report Type
ComboBox Change Event
设置ActiveWorksheet
,其余 3 个ComboBoxes
控制Worksheet
用于实现正确选择和显示数据的values
, Submit
填充Worksheet
上的Cells
并调用Function
DisplayRange rngToDisplay
! 在实施DisplayRange rngToDisplay
之前,我确认了所有Worksheets
的正确操作! Choose Report Type
的Code
如下:
Private Sub cmbPropWksts_Change() 'Located on MultiPage1.Page4
Select Case cmbPropWksts.ListIndex
Case 0
wkstSum.Select
rngRptSum.Select
Set rngToDisplay = rngRptSum
Case 1
wkstDetail.Select
rngRptDetail.Select
Set rngToDisplay = rngRptDetail
Case 2
wkstCmpYrsElec.Select
rngRptCmpYrsElect.Select
Set rngToDisplay = rngRptCmpYrsElect
Case 3
wkstCmpYrsGas.Select
rngRptCmpYrsGas.Select
Set rngToDisplay = rngRptCmpYrsGas
End Select
cmdSubmit.Caption = "Display " & cmbPropWksts.Value
Call MeasureSelection_Pixels
If cmbPropWksts.ListIndex > 1 Then
cmbwkstYrs2.Visible = True
End If
End Sub
Submit Button Code
在这里:
pID = cmbRptPrpID.Text
pIndex = cmbRptPrpID.ListIndex + 2
wsYr1 = cmbWkstYrs1.Text
wsYr2 = cmbwkstYrs2.Text
Select Case cmbPropWksts.ListIndex
Case 0
ActiveSheet.Cells(3, "B") = cmbRptPrpID.Text 'Cell B3 of the Summary Worksheet
ActiveSheet.Cells(3, "Q") = cmbWkstYrs1.Text 'Cell Q3 of the Summary Worksheet
ActiveSheet.Cells(1, "A") = wsCntrl.Cells(pIndex, "N") 'Cell for the Property's address
Case 1
ActiveSheet.Cells(3, "B") = cmbRptPrpID.Text 'Cell B3 of the Summary Worksheet
ActiveSheet.Cells(3, "Q") = cmbWkstYrs1.Text 'Cell Q3 of the Summary Worksheet
ActiveSheet.Cells(1, "A") = wsCntrl.Cells(pIndex, "N") 'Cell for the Property's address
Case 2, 3
ActiveSheet.Cells(2, "B") = cmbRptPrpID.Text 'Cell B3 of the Summary Worksheet
ActiveSheet.Cells(2, "C") = cmbWkstYrs1.Text 'Cell Q3 of the Summary Worksheet
ActiveSheet.Cells(17, "C") = cmbwkstYrs2.Text 'Cell Q17 of the Summary Worksheet
ActiveSheet.Cells(1, "A") = wsCntrl.Cells(pIndex, "N") 'Cell for the Property's address
End Select
DisplayRange rngToDisplay
End Sub
最后, DisplayRange
代码在这里:
Function DisplayRange(r As Range)
Dim wsChart As Worksheet
Dim fname As String
Set wsChart = ThisWorkbook.Worksheets("tmpChart")
fname = ThisWorkbook.Path & "\TempImages\temp.jpg"
r.CopyPicture xlScreen, xlBitmap
With wsChart
Dim chtObj As ChartObject
Set chtObj = .ChartObjects.Add(100, 30, 400, 250)
With chtObj
.Width = r.Width: .Height = r.Height
.Chart.Paste
.Chart.Export Filename:=fname, FilterName:="jpg"
.Delete
End With
DoEvents
End With
imgRpts1.Picture = LoadPicture(fname)
End Function
对上述Function
的Call
正确地在正确的Worksheet
表上生成Chart
,如下所示: 并在此处创建temp.jpg
图像: 在此处的正确Folder
中: Error 424
发生在这里!
我的研究表明,此Error
的最常见原因是由于Undeclared/Improperly Declared Varables
! 我已经检查了Varable Scopes
、 Image Box Name
和File Paths
,所以显然我遗漏了一些东西。
在此先感谢您的帮助!
由于@Ambie 的一个问题,我重新访问了Function DisplayRange
的Module Code
。 我记得在尝试将Code
从UserForm
移动到Module
并不断收到Variable Not Defined Error
时遇到的类似问题。 我今天学到了两个宝贵的教训。 首先,确保在 EVERY Module
中使用Option Explicit
。 其次,我学习了如何设置Inter-Module
和Module to UserForm
通信。
我通过添加这两行Code
解决了这个问题:
Dim imgRpts1 As Object
Set imgRpts1 = UserForm1.imgRpts1
这是最终的Function Code
:
Option Explicit
Function DisplayRange(r As Range)
Dim wsChart As Worksheet
Dim fname As String
Dim imgRpts1 As Object
Set imgRpts1 = UserForm1.imgRpts1
Set wsChart = ThisWorkbook.Worksheets("tmpChart")
fname = ThisWorkbook.Path & "\TempImages\temp.jpg"
r.CopyPicture xlScreen, xlBitmap
With wsChart
Dim chtObj As ChartObject
Set chtObj = .ChartObjects.Add(100, 30, 400, 250)
With chtObj
.Width = r.Width: .Height = r.Height
.Chart.Paste
.Chart.Export Filename:=fname, FilterName:="jpg"
.Delete
End With
DoEvents
End With
imgRpts1.Picture = LoadPicture(fname)
End Function
它有效! [![它的工作原理!][1]][1] [1]:https://i.stack.imgur.com/3DfCD.jpg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.