鱼C论坛

 找回密码
 立即注册
查看: 1955|回复: 4

VBA抓去合并单元格数据为空值

[复制链接]
发表于 2023-8-24 10:59:42 | 显示全部楼层 |阅读模式
20鱼币
各位大佬好,我在写个抓取某个文件夹里面excel文件的vb
现在问题是这样的,我在抓取A2:N2区域的合并单元格的值时,取A2的值为空,在同样的sheet里面,获取D4合并单元格的值就是可以获取的,
截取的代码如下:
operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ws.Cells(2, "A").Value
operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ws.Cells4, "D").Value

我在数据的表里面直接运行msgbox range("A2")
就是能获取值的,也试过格式问题
Sub CheckCellProperty()

  Dim ws As Worksheet
  Set ws = ThisWorkbook.Sheets("数据表名")

  MsgBox ws.Range("A1").Formula
  MsgBox ws.Range("A1").Locked
  MsgBox TypeName(ws.Range("A1").Value)

End Sub
数据也是可以抓取出来的,现在不知道问题在哪,有懂行的大佬救救吗




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-24 11:00:12 | 显示全部楼层
你好!根据你的描述,你在使用VBA抓取合并单元格的值时遇到了问题。你可以尝试使用 MergeArea 属性来获取合并单元格的值。

下面是修改后的代码示例:
operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ws.Range("A2").MergeArea.Value
operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ws.Range("D4").MergeArea.Value

通过使用 MergeArea 属性,你可以获取合并单元格的值。这样,你就可以正确地获取到A2和D4合并单元格的值了。

希望这个解决方案对你有帮助!如果你还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-24 11:00:24 | 显示全部楼层
根据你提供的代码和描述,可能有几个可能导致无法获取合并单元格值的原因。以下是一些常见问题和解决方法:

1. 合并单元格的值只能通过合并单元格的左上角单元格来获取。在你的代码中,ws.Cells(2, "A").Value 获取的是 A2 单元格的值,而如果 A2 是一个合并单元格,那么它的值将只能通过合并单元格的左上角单元格来获取。所以你需要使用合并单元格的左上角单元格地址。

可以尝试修改代码如下:
operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ws.Range("A2").MergeArea.Cells(1, 1).Value

2. 另一个可能的问题是合并单元格的值可能为空白或仅包含格式而无实际值。你可以使用 IsEmpty 函数或检查值的数据类型来确定是否存在值。

可以尝试修改代码如下:
Dim mergedValue As Variant
mergedValue = ws.Range("A2").MergeArea.Cells(1, 1).Value

If IsEmpty(mergedValue) Then
    ' 值为空
    operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ""
Else
    ' 判断数据类型
    If TypeName(mergedValue) = "String" Then
        ' 字符串值
        operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = mergedValue
    Else
        ' 其他数据类型值
        operationSheet.Cells(lastRow1 + rowIndex - 1, "T").Value = ""
    End If
End If

请注意,在使用和访问合并单元格值时,确保你正在处理的是正确的单元格范围以及合并单元格区域的左上角单元格。

希望这些解决方法能够帮助到你。如果问题仍然存在,请提供更多代码和示例数据,以便更好地理解问题并给出更具体的解决方案。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-8-24 12:01:20 | 显示全部楼层
isdkz 发表于 2023-8-24 11:00
你好!根据你的描述,你在使用VBA抓取合并单元格的值时遇到了问题。你可以尝试使用 MergeArea 属性来获取合 ...

我在上面的内容已经提过啦,D4可以被拉出来值,但是A2不行,合并类型是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-8-24 12:42:21 | 显示全部楼层
陶远航 发表于 2023-8-24 11:00
根据你提供的代码和描述,可能有几个可能导致无法获取合并单元格值的原因。以下是一些常见问题和解决方法: ...

这个代码也一样的,值并不是空的,在数据的sheet里直接执行msgbox代码是有数据的,换用别的表抓取就没有数据了,我做过很多测试也都不行,这个代码我试过了也不行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 13:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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