【发布时间】:2023-03-30 06:55:02
【问题描述】:
我正在尝试编写代码,在检查工作簿每张表中的信息后输入图像。由于我将 for each 添加到它停止工作的代码并开始给我这个编译错误消息,因此代码在没有 for each 的情况下工作,但我希望它是自动的。你能帮忙吗?
Sub ForEachWs()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Call Worksheet_SelectionChange
Next ws
End Sub
Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Column = 2 And Target.Row = 1 Then ' onde clicar para buscar imagem
BuscarImagemTavares (Target.Value)
End If
End Sub
Sub BuscarImagemTavares(Produto As String)
On Error Resume Next
'Autor: Tavares
If Range("B2") = "ok" Then 'Verifica se celula B2 tem ok se sim não insere a imagem novamente
Exit Sub
End If
Dim Imagem, CaminhoImagem As String
If Len(Produto) = 3 Then 'acrescenta 00 antes do cod do produto
Produto = "00" & Produto
End If
If Len(Produto) = 4 Then 'acrescenta 0 antes do cod do produto
Produto = "0" & Produto
End If
Imagem = Dir("\\Clfssrvfar\ENGENHARIA\GESTAO_DE_PROJETOS\04. FOLLOWUP\09. ARQUIVOS PARA FERRAMENTAS\09.1 IMAGENS\09.1.2 IMAGENS PRODUTOS\" & Produto & "*", vbDirectory)
CaminhoImagem = "\\Clfssrvfar\ENGENHARIA\GESTAO_DE_PROJETOS\04. FOLLOWUP\09. ARQUIVOS PARA FERRAMENTAS\09.1 IMAGENS\09.1.2 IMAGENS PRODUTOS\" & Imagem
With ActiveSheet.Pictures.Insert(CaminhoImagem) 'Mostra Imagem
'Define tamanho e posição da imagem
With .ShapeRange
.Width = 75
.Height = 115
.Top = 7
.Left = 715
'*above it's me trying to make white background transparent*
'With .PictureFormat
'.TransparentBackground = True
'.TransparencyColor = RGB(255, 0, 0)
'End With
'.Fill.Visible = True
'End With
'ActiveSheet.Shapes.Range(Array("Picture 2")).Select
'Application.CommandBars("Format Object").Visible = False
End With
End With
If CaminhoImagem <> "" Then 'Após inserir imagem informa "ok" na B2 para não inserir de novo
Range("B2").Select
ActiveCell.FormulaR1C1 = "OK"
End If
End Sub
【问题讨论】:
-
您到底想用子
ForEachWs()实现什么? -
我希望它是自动的,我只是启动宏,它会遍历每张纸,否则我必须访问每张纸才能输入图像
标签: excel vba compiler-errors