Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用VBA生成一个范围_Excel_Vba - Fatal编程技术网

Excel 用VBA生成一个范围

Excel 用VBA生成一个范围,excel,vba,Excel,Vba,我是VBA新手(4个月),主要记录构建宏的操作 现在,我正在尝试构建一个简单的宏来选择列中的所有数据,并使其成为正确的大小写。 我怎样才能做到这一点,有人能给我指出一个我自己找不到的资源吗 这也是我的第一篇帖子!谢谢你抽出时间给任何看到这个的人 这是我的开始: Range("D3").Select Range(Selection, Selection.End(xlDown)).Select 我想我想使用应用程序.WorksheetFunction.property但我不知道

我是VBA新手(4个月),主要记录构建宏的操作

现在,我正在尝试构建一个简单的宏来选择列中的所有数据,并使其成为正确的大小写。 我怎样才能做到这一点,有人能给我指出一个我自己找不到的资源吗

这也是我的第一篇帖子!谢谢你抽出时间给任何看到这个的人

这是我的开始:

Range("D3").Select
Range(Selection, Selection.End(xlDown)).Select

我想我想使用
应用程序.WorksheetFunction.property
但我不知道如何使用请尝试这种方法。下一个代码处理列E:E中的值。您可以轻松地将其调整为另一列。无需选择任何内容。选择、激活只会消耗Excel资源,不会带来任何好处:

Sub UcaseRange()
 Dim sh As Worksheet, rng As Range
 
  Set sh = ActiveSheet
  Set rng = sh.Range("E2:E" & sh.Range("E" & sh.rows.count).End(xlUp).row)

  rng = Evaluate("INDEX(UPPER(" & rng.Address(0, 0) & "),)")
End Sub

下面是我的方法,调整列索引(rw.Row,1)以适合您的项目

Sub ConvertValuesInColumnOneToProperCase()

    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet: Set ws = ActiveSheet

    Dim rw As Range

    For Each rw In ws.UsedRange.Rows
        ws.Cells(rw.Row, 1) = StrConv(ws.Cells(rw.Row, 1), vbProperCase)
    Next rw

End Sub

有关如何查找上次使用的单元格的信息,请参阅。您能给我指一个通用资源,说明使用什么而不是选择什么吗?正如我所说的,我的大多数宏都是从记录函数生成的,我不知道如何独立编写代码。@TastyPlacebo:我认为查看上面的代码应该是显而易见的。。。该范围是通过将“E2:E”字符串与最后一个行号串联而建立的。使用
sh.Range(“E”和sh.rows.count).End(xlUp).row
获得。现在更清楚了吗?对我来说没有什么是显而易见的,因为我对编写任何类型的代码都是全新的。这更清楚了,谢谢。我将您共享的代码更改为我需要的专栏,并将其从UPPER更改为Right,效果非常好,谢谢。