相关疑难解决方法(0)

如何避免在Excel VBA中使用Select

我听说过很多关于.Select在Excel VBA 中使用的可理解的憎恶,但我不确定如何避免使用它.我发现如果我能够使用变量而不是Select函数,我的代码将更加可重用.但是,ActiveCell如果不使用,我不确定如何引用事物(如等)Select.

我发现这篇关于范围的文章这个例子关于不使用select的好处却找不到怎么样的东西?

excel vba

511
推荐指数
15
解决办法
26万
查看次数

将整个范围转换为小写而不通过单元格间接循环

我正在查看VBA代码,它接受整个范围的单元格并将它们转换为小写.我找到了以下内容:

[A1:A20] = [index(lower(A1:A20),)]
Run Code Online (Sandbox Code Playgroud)

这适用于固定范围(不完全理解语法,但发现以下帖子:)

发布上面的详细代码

我的问题是:

我希望能够动态设置范围,因为我正在处理更改范围大小.但是,以下不起作用,我似乎无法在VBA中使用INDIRECT().

Range("A1:A" & n) = [index(lower(Range("A1:A" & n)),)]
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作?我真的想避免使用for循环,因为我怀疑这应该快得多..

excel vba range lowercase excel-vba

8
推荐指数
2
解决办法
2036
查看次数

删除 || (管道)在列内文本的末尾

我有这个问题,我似乎无法解决...

在 LI 列中有一些角色,这些角色被 || 划分 (管道)。

问题:有些人像这样提供他们想要使用的这些角色:

Testing||Admin||Moderator||
Run Code Online (Sandbox Code Playgroud)

但这对我们用来导入这些角色的脚本不起作用,我希望看到的是,每当 || (pipes) 被使用,并且在使用管道之后,如果后面没有任何文本,它应该删除最后的管道。

我尝试的是查找和替换选项,但这也会删除文本之间的管道。

希望可以有人帮帮我!

问题:

Testing||Admin||Moderator||
Run Code Online (Sandbox Code Playgroud)

解决方案:

Testing||Admin||Moderator
Run Code Online (Sandbox Code Playgroud)

excel vba

4
推荐指数
2
解决办法
160
查看次数

如何使每个单元格的长度为5?

我有一列有 7000 多个名字。我想让每个名字的长度不超过5. 这是我尝试过但不起作用的方法

Sub del()
    Dim myCell
    Set myCell = ActiveCell
    Dim count As Integer

    count = Len(ActiveCell)

    While count > 5
        myCell = Left(myCell, Len(myCell) - 1)
        myCell.Offset(1, 0).Select
        Set myCell = ActiveCell
    Wend
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba

4
推荐指数
1
解决办法
58
查看次数

将整数变量转换为VBA中带前导零的字符串

对于初学者来说,这个主题已经提出了很多问题.然而,我一直点击的所有语言都是VBA以外的语言,我不理解这些语言的语法.

当我进行谷歌搜索时,我发现这个答案看起来很有希望.AH FIDDLE STICKS!我刚刚意识到VB的答案,可能解释了为什么它不能在我的VBA中工作

情况

我有一个名为DimScale的变量,它是一个整数.我想创建一个名为DimName的字符串,它将以"mm-"开头,并跟随DimScale中带有前导0的整数,使得"mm-"后面的字符最少.

IF DimScale = 25
Then DimName = "mm-0025"

IF DimScale = 235
Then DimName = "mm-0235"

Note Dimscale >=1 and <= 9999
Run Code Online (Sandbox Code Playgroud)

我试过了什么

Dim Dimscale as Integer
Dim Dimension_Style_Name as String

String.Format("{0:0000}", DimScale)

Dimension_Style_Name = DimScale$
Dimension_Style_Name.Format("{0:0000}", DimScale)
Run Code Online (Sandbox Code Playgroud)

我已经阅读了要点,Dimscale转换为字符串,然后通过添加前导零的循环发送,直到字符串的长度等于我的情况下整数部分的4个字符.

我也看过IF的情况,其中IF Dimscale <10然后是"000"&如果Dimscale <100则是"00"等.

有没有办法像VBA中的VB方法一样?

vba excel-vba

3
推荐指数
1
解决办法
3899
查看次数

标签 统计

vba ×5

excel ×4

excel-vba ×2

lowercase ×1

range ×1