[英]"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.