0

亲爱的朋友们,我正在尝试根据组合框中选择的名称显示这些人的照片。我成功地做到了,但我的问题是,在组合框中不断选择不同的名称时,有时会突然显示**错误 13,键入不匹配**,我的组合框也消失了。但在那之后,使 Mypics 的可见性(名称定义到人名和图片表中)“真实”,它在编译 2 到 3 次后再次出现。

这是我的代码

Private Sub Worksheet_Calculate()
Dim Mypics As Picture

Me.Pictures.Visible = False

 With Range("B8")

   For Each Mypics In Me.Pictures

    If (Mypics.Name = .Text) Then

      Mypics.Visible = True
      Mypics.Top = .Top
      Mypics.Left = .Left

   Exit For
    End If
  Next Mypics
 End With  
End Sub

单元格“B8”是根据索引号在组合框中选择的人名显示图片名称的位置。

4

1 回答 1

0

通常,清理代码可以产生奇迹。With如果您只想使用一次,我真诚地建议避免使用它,就像在您的原始代码中一样。如何尝试以下方法:

Private Sub Worksheet_Calculate()
    Dim Mypics As Picture
    Dim TargetName As String
    TargetName = Range("B8").Text
    Me.Pictures.Visible = False
    For Each Mypics In Me.Pictures
        If Mypics.Name = TargetName Then
            With Mypics
                .Visible = True
                .Top = .Top
                .Left = .Left
            End With
            Exit For
        End If
    Next Mypics
End Sub

让我们知道这是否有效。另外,Dim尽你所能Dim。通常,type mismatch由于在代码开头错误地声明了变量而引发错误。

于 2013-10-28T18:00:28.477 回答