Все еще новичок в VBA и нуждается в помощи для изменения некоторого существующего кода.
В новом коде должно быть несколько операторов IF: Если скопированный шрифт имеет зеленый цвет, вставьте в качестве значений и измените цвет шрифта с зеленого на синий. Если скопированный шрифт отличается от зеленого, вставьте его как формулы.
Sub InvestorModelMacro()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
DisplayGridlines = False
Dim r As Range, ws As Worksheet
For Each r In Worksheets("Asset Dashboard").Range("C6:C9") 'go through each cell in DV list
If Len(r) > 0 Then 'only do something if cell not empty
Worksheets("Live").Range("D3").Value = r.Value 'transfer value to cell D3 of 'Live' tab
Application.Calculate
Set ws = Worksheets.Add 'add new sheet
ws.Name = Worksheets("Investor Model").Range("D3") 'renames new sheet after selected asset
Worksheets("Investor Model").Cells.Copy
ws.Range("A1").PasteSpecial xlValues 'copy values only from Investor Model to new sheet
ws.Range("A1").PasteSpecial xlFormats 'copy formats only from Investor Model to new sheet
ActiveWindow.DisplayGridlines = False 'turns off gridlines
End If
Next r
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
К сожалению, приведенный ниже код по-прежнему возвращает формулы для всех ячеек, вставленных в новые рабочие листы. Мне нужно, чтобы зеленый шрифт вставлялся как значения, а все остальные цвета шрифта оставались в виде формул ...
Sub InvestorModelMacro()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
DisplayGridlines = False
Dim r As Range, ws As Worksheet
For Each r In Worksheets("Asset Dashboard").Range("C6:C9") 'go through each cell in DV list
If Len(r) > 0 Then 'only do something if cell not empty
Worksheets("Live").Range("D3").Value = r.Value 'transfer value to cell D3 of 'Live' tab
Application.Calculate
Set ws = Worksheets.Add 'add new sheet
ws.Name = Worksheets("Investor Model").Range("D3") 'renames new sheet after selected asset
If r.Font.Color = RGB(0, 153, 0) Then
r.Copy
Range("A1").PasteSpecial xlPasteValues
Range("A1").Font.Color = RGB(0, 153, 0)
Else
r.Copy
Range("A1").PasteSpecial xlPasteFormulas
Range("A1").Font.Color = RGB(0, 0, 255)
End If
Worksheets("Investor Model").Cells.Copy
ws.Range("A1").PasteSpecial xlFormulas 'copy values only from Investor Model to new sheet
ws.Range("A1").PasteSpecial xlFormats 'copy formats only from Investor Model to new sheet
ActiveWindow.DisplayGridlines = False 'turns off gridlines
End If
Next r
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub