将整数传递给代码行

时间:2016-02-14 04:45:00

标签: excel vba

我正在尝试将整数“i”传递给代码中的一行:

Dim i As Integer

i = Worksheets("Sheet1").Range("A8").Value
If Ans = vbYes Then Sheets("Sheet1").Image(i).Picture = LoadPicture(Pict)

我有许多不同的图像控件,根据A8范围内的值,我想把#作为“i”传递给上面的代码行。

3 个答案:

答案 0 :(得分:0)

cint()函数将获取值并将其转换(转换)为Integer变量类型,然后将其存储到i变量中。您还可以使用图像控件引用数组直接通过索引值i。

修改它们
i = CInt(Worksheets("Sheet1").Range("A8").Value)
If Ans = vbYes Then imagelist(i).Picture = LoadPicture(Pict)

在Excel电子表格VBA编辑器中,您需要执行以下操作。

插入新模块并将此行添加到其中

Global imagelist(1 To 25) As Variant

现在在Workbook对象下

Private Sub Workbook_Open()
Set imagelist(1) = Sheets("Sheet1").Image1
Set imagelist(2) = Sheets("Sheet1").Image2
...
Set imagelist(24) = Sheets("Sheet1").Image24
Set imagelist(25) = Sheets("Sheet1").Image25
End Sub

这将允许您使用代码中的imagelist(i)访问图像控件,全局变量将允许整个电子表格中的任何代码都能够访问这些图片。

答案 1 :(得分:0)

您不能代表这样的代号变量,因此您可以通过访问图像对象集合并使用它的名称作为索引查找所需项目来实现这一目标。

例如:

Sheet

在上面的示例中,编译器正在查找名为i的集合,并尝试访问索引1处的项目(因为Sheets("My Sheet " & i).Range("A1").Value = "Foo" = 1)。该集合不存在,因此代码错误。

在这些场景中,您必须查找对象的全局集合并访问 。回头参考上面的例子,您将使用:

Shapes

因此,在您的示例中,您需要确定图像所属的集合(例如If Ans = vbYes Then Sheets("Sheet1").Shapes("Image" & i).Picture = LoadPicture(Pict) 集合),然后使用以下内容:

default-src 'self' sub1.example.com sub2.example.com

(我在这里使用了形状集合作为一个例子,它可能不适合你,但重点是从集合中获取一个项目,所以你应该能够适应它)

答案 2 :(得分:0)

你可以尝试

With Worksheets("Sheet1")
    i = .Range("A8").Value
    .Shapes.Item("ImageList" & i).Picture = LoadPicture(Pict)
End With

或者您可以使用

    .oleobjects.item("ImageList"& i).Picture = LoadPicture(Pict)