Vba 将范围(非连续)转换为值

Vba 将范围(非连续)转换为值,vba,excel,Vba,Excel,我有大量复杂的公式,使用外部数据源。我的用户无权访问此数据源,因此我希望在发送工作表之前将范围转换为值 射程= =VALs!$A$1,VALs!$D$1:$D$45,VALs!$F$1:$G$45,VALs!$I$1:$J$45,VALs!$N$1:$N$45,VALs!$R$1:$T$45,VALs!$V$1:$V$45,VALs!$X$1:$Y$45,VALs!$AB$1:$AB$45,VALs!$AE$1:$AE$45,VALs!$AT$1:$AT$45,VALs!$AW$1:$BB$45

我有大量复杂的公式,使用外部数据源。我的用户无权访问此数据源,因此我希望在发送工作表之前将范围转换为值

射程=

=VALs!$A$1,VALs!$D$1:$D$45,VALs!$F$1:$G$45,VALs!$I$1:$J$45,VALs!$N$1:$N$45,VALs!$R$1:$T$45,VALs!$V$1:$V$45,VALs!$X$1:$Y$45,VALs!$AB$1:$AB$45,VALs!$AE$1:$AE$45,VALs!$AT$1:$AT$45,VALs!$AW$1:$BB$45,VALs!$BD$1:$BD$45,VALs!$BG$1:$BG$45,VALs!$BK$1:$BK$45,VALs!$BQ$1:$BQ$45,VALs!$BT$1:$BT$45,VALs!$CC$1:$CD$45,VALs!$CJ$1:$CJ$45,VALs!$CN$1:$CN$45,VALs!$CP$1:$CQ$45,VALs!$CU$1:$CW$45,VALs!$DA$1:$DC$45,VALs!$DH$1:$DH$45,VALs!$DJ$1:$DJ$45,VALs!$DL$1:$DL$45,VALs!$DO$1:$DO$45,VALs!$DR$1:$DS$45,VALs!$DV$1:$DV$45,VALs!$DZ$1:$EA$45,VALs!$EV$1:$EV$45,VALs!$EY$1:$EY$45,VALs!$FB$1:$FC$45,VALs!$FE$1:$FL$45
现在:

  • 复制并粘贴为值不适用于多个选择
  • 带有工作表(“VAL”).范围(“值”).当前区域 .Value=.Value不起作用,我用空单元格代替范围
  • 该范围是动态的,并且会经常更改,这就是它被命名的原因,有一个单独的子对象来创建该范围

有人能帮忙吗?

你是说这么简单的事情吗?(在本例中,命名范围命名为“RNG”。)


还是问题更复杂,我不明白?

我很感激,应该考虑在单元格中进行迭代。
Sub RangeToValues()
  For Each cel In Range("RNG").Cells
    cel.Value = cel.Value
  Next cel
End Sub