Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 通过VBA userforms使用一个按钮将多个JPG插入不同的单元格_Excel_Vba_Userform - Fatal编程技术网

Excel 通过VBA userforms使用一个按钮将多个JPG插入不同的单元格

Excel 通过VBA userforms使用一个按钮将多个JPG插入不同的单元格,excel,vba,userform,Excel,Vba,Userform,我正在开发一个非serform,它允许用户将图片作为附件插入到特定的单元格中。到目前为止,一个按钮负责一个特定单元的一张图片。我想知道是否可以多次点击一个按钮,将多张图片插入多个单元格,根据已插入图片的数量更改下一张图片的位置 这是我用于将一张图片插入工作表单个特定单元格的一个按钮的代码: Private Sub CommandButtonUpload_Click() Dim PicLoad As Variant PicLoad = Application.GetSaveAsFilename

我正在开发一个非serform,它允许用户将图片作为附件插入到特定的单元格中。到目前为止,一个按钮负责一个特定单元的一张图片。我想知道是否可以多次点击一个按钮,将多张图片插入多个单元格,根据已插入图片的数量更改下一张图片的位置

这是我用于将一张图片插入工作表单个特定单元格的一个按钮的代码:

 Private Sub CommandButtonUpload_Click()

Dim PicLoad As Variant
PicLoad = Application.GetSaveAsFilename

Dim PicPath As String, Pic As Picture, ImageCell As Range

    PicPath = PicLoad
    Set ImageCell = Worksheets("Example").Range("a62")

    Set Pic = Worksheets("Example").Pictures.Insert(PicPath)
    With Pic
        .ShapeRange.LockAspectRatio = msoTrue
        .Left = ImageCell.Left
        .Top = ImageCell.Top

    End With
End Sub

使用静态变量
PicCount
跟踪已添加的图片数量

Private Sub CommandButtonUpload_Click()
    Dim PicLoad As Variant
    PicLoad = Application.GetSaveAsFilename
    
    If PicLoad = False Then Exit Sub 'user pressed cancel so exit

    Dim PicPath As String
    PicPath = PicLoad

    Static PicCount As Long

    Dim ImageCell As Range
    Set ImageCell = Worksheets("Example").Range("A" & cStr(62 + PicCount * 30))
    PicCount = PicCount + 1

    Dim Pic As Picture
    Set Pic = Worksheets("Example").Pictures.Insert(PicPath)
    With Pic
        .ShapeRange.LockAspectRatio = msoTrue
        .Left = ImageCell.Left
        .Top = ImageCell.Top
    End With
End Sub

这是可能的但你对这个问题的描述是一种宽泛的方式,可以给出更准确的答案。“进入不同的细胞”不够精确。第一个单元格是否总是
A62
,其他“不同”单元格是否在下面?请给出更精确的描述,截图也可能有所帮助我们的想法是使用一个静态计数器,并使用
Range.Offset
从原始单元格移动计数器的数量。嘿。是-第一个单元格始终为A62。接下来的图片应该在下面,例如A92,A122。。。在下面30个单元格的恒定间隔内。