我听说过很多关于.Select在Excel VBA 中使用的可理解的憎恶,但我不确定如何避免使用它.我发现如果我能够使用变量而不是Select函数,我的代码将更加可重用.但是,ActiveCell如果不使用,我不确定如何引用事物(如等)Select.
我发现这篇关于范围的文章和这个例子关于不使用select的好处却找不到怎么样的东西?
我正在查看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循环,因为我怀疑这应该快得多..
我有这个问题,我似乎无法解决...
在 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) 我有一列有 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) 对于初学者来说,这个主题已经提出了很多问题.然而,我一直点击的所有语言都是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方法一样?