鱼C论坛

 找回密码
 立即注册
查看: 2796|回复: 6

[已解决]关于vba的一个小问题

[复制链接]
发表于 2023-4-28 14:01:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在不使用  Private Sub Worksheet_SelectionChange(ByVal Target As Range)  的前提下

如果获取当前sheet中  是否有单元格被选中  或者是哪个单元格被选中  被选中的单元格的值是多少
最佳答案
2023-4-29 11:25:40
可以通过VBA中的Application.Selection属性来获取当前被选中的单元格或单元格区域。具体来说,可以使用以下代码来获取当前被选中的单元格的地址和值:
  1. Dim selectedRange As Range
  2. Set selectedRange = Application.Selection

  3. If Not selectedRange Is Nothing Then
  4.     MsgBox "当前选中的单元格是:" & selectedRange.Address & vbCrLf & _
  5.            "选中单元格的值是:" & selectedRange.Value
  6. Else
  7.     MsgBox "当前没有选中任何单元格。"
  8. End If
复制代码

在这个例子中,如果当前有单元格被选中,则selectedRange变量将被设置为选中的单元格区域,否则将显示一条消息表明当前没有选中任何单元格。然后,您可以使用selectedRange变量来访问选中单元格的地址和值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-28 14:03:22 | 显示全部楼层
在VBA中,即使不使用`Private Sub Worksheet_SelectionChange(ByVal Target As Range)`事件,你仍然可以获取当前工作表中选中的单元格以及其值。你可以通过`ActiveSheet`和`Selection`对象来实现这一点。

以下是一个简单的例子,显示如何获取当前工作表中选中单元格的地址和值:

  1. Sub GetSelectedCell()

  2.     Dim ws As Worksheet
  3.     Dim selectedRange As Range
  4.     Dim selectedCell As Range
  5.     Dim cellAddress As String
  6.     Dim cellValue As Variant

  7.     ' 获取当前活动工作表
  8.     Set ws = ActiveSheet
  9.    
  10.     ' 获取选中的区域
  11.     Set selectedRange = ws.Selection

  12.     ' 遍历选中的单元格
  13.     For Each selectedCell In selectedRange.Cells
  14.         cellAddress = selectedCell.Address
  15.         cellValue = selectedCell.Value

  16.         ' 输出单元格地址和值
  17.         MsgBox "选中的单元格地址: " & cellAddress & vbNewLine & "单元格的值: " & cellValue
  18.     Next selectedCell

  19. End Sub
复制代码


这个示例中的代码将遍历活动工作表中所有选中的单元格,并弹出一个消息框显示每个单元格的地址和值。你可以根据需要自定义这个过程,例如将选中单元格的信息存储在变量中以便稍后使用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-28 14:18:10 | 显示全部楼层
isdkz 发表于 2023-4-28 14:03
在VBA中,即使不使用`Private Sub Worksheet_SelectionChange(ByVal Target As Range)`事件,你仍然可以获 ...

难道我的不是excel
无标题.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-28 14:33:45 | 显示全部楼层
wp231957 发表于 2023-4-28 14:18
难道我的不是excel

额,不清楚,我的电脑上没有 excel 试不了,wps 上使用 vba 要开通企业权益才行,我等会儿下载个 office 看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-29 11:25:40 | 显示全部楼层    本楼为最佳答案   
可以通过VBA中的Application.Selection属性来获取当前被选中的单元格或单元格区域。具体来说,可以使用以下代码来获取当前被选中的单元格的地址和值:
  1. Dim selectedRange As Range
  2. Set selectedRange = Application.Selection

  3. If Not selectedRange Is Nothing Then
  4.     MsgBox "当前选中的单元格是:" & selectedRange.Address & vbCrLf & _
  5.            "选中单元格的值是:" & selectedRange.Value
  6. Else
  7.     MsgBox "当前没有选中任何单元格。"
  8. End If
复制代码

在这个例子中,如果当前有单元格被选中,则selectedRange变量将被设置为选中的单元格区域,否则将显示一条消息表明当前没有选中任何单元格。然后,您可以使用selectedRange变量来访问选中单元格的地址和值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-4 14:56:22 | 显示全部楼层
陶远航 发表于 2023-4-29 11:25
可以通过VBA中的Application.Selection属性来获取当前被选中的单元格或单元格区域。具体来说,可以使用以下 ...

再追问一下:
selectedRange.Value   这个只适合选中的是一个单元格   如果是一些单元格  该怎么写
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-6 18:01:36 | 显示全部楼层
本帖最后由 陶远航 于 2023-5-6 18:02 编辑

对不起,我最近在上学,没时间回复

如果您想获取用户通过鼠标选择的单元格范围,您可以使用 Selection 对象,它类似于 Range 对象,但不完全相同。您可以将 Selection 对象赋值给一个 Range 对象,然后像处理其他范围一样处理它。例如:
  1. Dim myRange As Range
  2. Set myRange = Selection
复制代码

如果您想获取选择范围的地址(如 "A1:B1"),您可以使用 Selection 对象的 Address 属性。例如:
  1. Dim myAddress As String
  2. myAddress = Selection.Address
复制代码

如果您想设置或获取选择范围的值,您可以使用 Selection 对象的 Value 属性。例如:
  1. Selection.Value = "My Range" '设置选择范围的值为 "My Range"
  2. Dim myValue As Variant
  3. myValue = Selection.Value '获取选择范围的值并赋值给变量 myValue
复制代码

希望这些信息对您有帮助。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 20:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表