このコードを短くするにはいくつかの助けが必要です。私は50行(linha)間隔プロシージャが大きすぎるVBA Excel
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim foto As Range
Dim destino As Range
Dim linha As Long
Dim fName As String
Dim pName As String
Dim iName As String
Dim iNameClean As String
Dim iNameExcel As String
Dim fNameExcel As String
Set foto = Target.Cells(1)
Set destino = Me.Range("AU:BC,BN:BV,CG:CO,CZ:DH,DS:EA,EL:ET,FE:FM,FX:GF,GQ:GY,HJ:HR,IC:IK,IV:JD,JO:JW,KH:KP,NF:NN,NY:OG,OR:OZ,PK:PS")
If Not Application.Intersect(foto, destino) Is Nothing Then
linha = foto.Row
If (linha >= 20 And linha <= 21) Then
With ActiveSheet
fName = Application.GetOpenFilename("Picture files (*.jpg;*.gif;*.bmp;*.tif), *.jpgs;*.gif;*.bmp;*.tif", , _
"Select picture to insert")
iName = Dir("" & fName & "")
If fName = "False" Then Exit Sub
iNameClean = Left(iName, Len(iName) - 4)
iNameExcel = "+Info"
fNameExcel = "F:\path\EXCEL\" & foto.Offset(1, 3).Value & ".xlsx"
With ActiveSheet
.Unprotect Password:="1234"
ActiveSheet.Pictures.Insert(fName).Select
foto.Offset(0, 2).Formula = "=HYPERLINK(""" & fName & """,""" & iNameClean & """)"
foto.Offset(0, 2).Font.ColorIndex = 1 ' preto
foto.Offset(0, 2).Font.Size = 9
foto.Offset(0, 2).Font.Underline = False
foto.Offset(0, 3).Formula = "=HYPERLINK(""" & fNameExcel & """,""" & iNameExcel & """)"
foto.Offset(0, 3).Font.ColorIndex = 1 ' preto
foto.Offset(0, 3).Font.Size = 9
foto.Offset(0, 3).Font.Underline = False
With Selection.ShapeRange
.LockAspectRatio = msoFalse
.Height = ActiveCell.MergeArea.Height
.Width = ActiveCell.MergeArea.Width
.Top = ActiveCell.Top
.Left = ActiveCell.Left
End With
.Protect Password:="1234"
End With
End With
End If
End Sub
することができます場合は、[編集]タイトル簡潔コードは*何*説明し、これは[codereview.se]のための完璧な質問になり、質問体内の周囲の状況について少し拡大します。それが立てば、Stack Overflowの話題になるのはちょっと*幅広すぎる*です。 –
なぜコードを短縮する必要がありますか?エラー "プロシージャが大きすぎる"を取得した場合は、いくつかの手順に分解してください。また、モジュールのサイズを超えた場合は、複数のモジュールにコードを配布してください。 – Ralph
@Ralph「プロシージャーが大きすぎる」というエラーが発生した場合は、さらに大きな問題があり、[SRP](https://en.wikipedia.org/wiki/Single_responsibility_principle)で少し読む必要があります;-) –