gpt4 book ai didi

excel - 编译错误: Argument not optional vba excel

转载 作者:行者123 更新时间:2023-12-02 10:59:54 25 4
gpt4 key购买 nike

我正在尝试编写代码,在检查工作簿每张纸上的信息后在其中输入图像。由于我在代码中添加了每个代码,因此它停止工作并开始向我提供此编译错误消息,因此该代码在没有每个代码的情况下都可以工作,但我希望它是自动的。你能帮我吗?

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

最佳答案

由于要为每个工作表都运行BuscarImagemTavares子代码,因此必须同时更改ForEachWsBuscarImagemTavares子代码。

ForEachWs:

Sub ForEachWs()
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets
'Here you can directly call the sub without the sub Worksheet_SelectionChange
Call BuscarImagemTavares(ws, ws.Cells(1,2).Value)
'in BuscarImagemTavares you´ll need the ws reference to actually work on the right worksheet (otherwise youll always work on the selected one)
Next ws

End Sub

BuscarImagemTavares:
Sub BuscarImagemTavares(ByVal ws as Worrksheet, Produto As String)
'Mind the additional parameter 'ws'
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
If ws.Range("B2") = "ok" Then 'Here you actually have to use a reference to the Worksheet you want to use, otherwise alwys the same will be used
Exit Sub
End If

...

'You need the reference here as well so you won#t use the same worksheet over and over again
With ws.Pictures.Insert(CaminhoImagem) 'Mostra Imagem

...

If CaminhoImagem <> "" Then 'Após inserir imagem informa "ok" na B2 para não inserir de novo
'Range("B2").Select
'ActiveCell.FormulaR1C1 = "OK"
'If you don´t actually need the cell in excel to be selected after the programm finished you should´nt use the '.select' and '.selection' instead use this:
ws.Range("B2").Value= "OK" 'Since you aren´t adding a formula you should address the '.value' property
End If

...

End Sub

希望我能对您有所帮助。

关于excel - 编译错误: Argument not optional vba excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45304490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com