vba - 在VBA中替换字符串中字符的最快方法

标签 vba excel

我有一个字符串(一个 excel 范围),例如“$A$1:$AB$1200”。

我需要将起始范围的行(此处为 1)替换为其他值,例如 6(因此字符串变为“$A$6:$AB$1200”)

我尝试使用下面的代码,但它似乎变得太复杂了

 Dim stRng As String
  stRng = Split(usdRange, ":")(0)

   Dim row2bRepl As Long
   row2bRepl = Right(stRng, Len(stRng) - InStr(2, stRng, "$"))

   usdRange = Replace(stRng, row2bRepl, hdrRow, InStr(2, stRng, "$"))

关于如何更简单地实现这一点的任何帮助?

蒂亚!

最佳答案

这是非常快速且非常直接的!

Sub test()
    Dim s1 As String, s2 As String

    s1 = "$A$1:$AB$1200"
    s2 = Intersect(Range(s1), Range(s1).Offset(5, 0)).Address 'evaluates to $A$6:$AB$1200
End Sub

根据您的评论,在这里您可以看到它在完全随机的范围内运行良好,仅在运行时确定
Sub test()
    Dim usdRange As String, usdRange2 As String
    Dim lastRow As Long, lastCol As Long
    lastRow = Application.WorksheetFunction.RandBetween(10, 100)
    lastCol = Application.WorksheetFunction.RandBetween(1, 100)

    usdRange = Range("A1", Cells(lastRow, lastCol)).Address
    usdRange2 = Intersect(Range(usdRange), Range(usdRange).Offset(5, 0)).Address

    Debug.Print usdRange, usdRange2
End Sub

输出以下内容,将所有范围偏移指定数量:
Old string    New string
$A$1:$CF$22   $A$6:$CF$22
$A$1:$AA$93   $A$6:$AA$93
$A$1:$N$82    $A$6:$N$82

关于vba - 在VBA中替换字符串中字符的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565614/

相关文章:

c++ - VBA 无法找到我的 DLL,尽管对位置进行了硬编码。

excel - 删除没有颜色的工作表,从所有工作表中删除评论,断开所有源的链接

windows - 将 Outlook 电子邮件保存为文本文件,然后在其上运行脚本?

python - 更改 OpenPyxl 中一行或一列的样式

vba - 使用VBA将Excel中两个单元格中的文本合并为一个

vba - 访问标准 VBA 字枚举

vba - 保护 Excel 工作簿(使用 VBA)免于与不同数据重复使用

vba - 一年中的天数 Excel VBA

vb.net - 如何在VB中使用Excel打开xls文件

javascript - Edge 浏览器 - iframe.document.open 不起作用