鱼C论坛

 找回密码
 立即注册
查看: 1976|回复: 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属性来获取当前被选中的单元格或单元格区域。具体来说,可以使用以下代码来获取当前被选中的单元格的地址和值:
Dim selectedRange As Range
Set selectedRange = Application.Selection

If Not selectedRange Is Nothing Then
    MsgBox "当前选中的单元格是:" & selectedRange.Address & vbCrLf & _
           "选中单元格的值是:" & selectedRange.Value
Else
    MsgBox "当前没有选中任何单元格。"
End If
在这个例子中,如果当前有单元格被选中,则selectedRange变量将被设置为选中的单元格区域,否则将显示一条消息表明当前没有选中任何单元格。然后,您可以使用selectedRange变量来访问选中单元格的地址和值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

    Dim ws As Worksheet
    Dim selectedRange As Range
    Dim selectedCell As Range
    Dim cellAddress As String
    Dim cellValue As Variant

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

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

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

End Sub

这个示例中的代码将遍历活动工作表中所有选中的单元格,并弹出一个消息框显示每个单元格的地址和值。你可以根据需要自定义这个过程,例如将选中单元格的信息存储在变量中以便稍后使用。
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

额,不清楚,我的电脑上没有 excel 试不了,wps 上使用 vba 要开通企业权益才行,我等会儿下载个 office 看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

If Not selectedRange Is Nothing Then
    MsgBox "当前选中的单元格是:" & selectedRange.Address & vbCrLf & _
           "选中单元格的值是:" & selectedRange.Value
Else
    MsgBox "当前没有选中任何单元格。"
End If
在这个例子中,如果当前有单元格被选中,则selectedRange变量将被设置为选中的单元格区域,否则将显示一条消息表明当前没有选中任何单元格。然后,您可以使用selectedRange变量来访问选中单元格的地址和值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

再追问一下:
selectedRange.Value   这个只适合选中的是一个单元格   如果是一些单元格  该怎么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

如果您想获取用户通过鼠标选择的单元格范围,您可以使用 Selection 对象,它类似于 Range 对象,但不完全相同。您可以将 Selection 对象赋值给一个 Range 对象,然后像处理其他范围一样处理它。例如:
Dim myRange As Range
Set myRange = Selection
如果您想获取选择范围的地址(如 "A1:B1"),您可以使用 Selection 对象的 Address 属性。例如:
Dim myAddress As String
myAddress = Selection.Address
如果您想设置或获取选择范围的值,您可以使用 Selection 对象的 Value 属性。例如:
Selection.Value = "My Range" '设置选择范围的值为 "My Range"
Dim myValue As Variant
myValue = Selection.Value '获取选择范围的值并赋值给变量 myValue
希望这些信息对您有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 22:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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