在excel如何使用vba判断非空单元格?

比如下表sheet1中,我想判断空单元格,如果是非空的单元格就复制到sheet2的对应单元格里!为什我这样写代码总是出错,提示缺少对象?... 比如下表sheet1中,我想判断空单元格,如果是非空的单元格就复制到sheet2的对应单元格里!
为什我这样写代码总是出错,提示缺少对象?
展开
 我来答
鱼木混猪哟
高粉答主

2015-11-09 · 专注Office,尤其Excel和VBA
鱼木混猪哟
采纳数:6078 获赞数:33696

向TA提问 私信TA
展开全部
因为单元格包含边框,所有看上去单元格没有内容,但是在使用Cell时,因为含有边框,Cell(i,j)<>"",可以用Cell(i,j).value<>""来判断。Cell不仅是单元格的内容,还包含单元格的格式等等与单元格相关的方面。

关于Cell的详细知识如下:
Cell代表单个表格单元格。
Cell对象是Cells集合中的元素。
Cells集合代表指定对象中所有的单元格。

用 Cell(row, column) 或 Cells(index)可返回 Cell对象,其中 row 为行号,column 为列号,index 为索引序号。下列示例给第一行的第二个单元格加底纹。

Set myCell = ActiveDocument.Tables(1).Cell(Row:=1, Column:=2)
myCell.Shading.Texture = wdTexture20Percent

下列示例给第一行的第一个单元格加底纹。

ActiveDocument.Tables(1).Rows(1).Cells(1).Shading _
.Texture = wdTexture20Percent

用Add方法可在 Cells集合中添加 Cell对象。也可用 Selection对象的InsertCells方法插入新单元格。下列示例在myTable 的第一个单元格之前插入一个单元格。

Set myTable = ActiveDocument.Tables(1)
myTable.Range.Cells.Add BeforeCell:=myTable.Cell(1, 1)

本示例将第一个表格的头两个单元格设定为一个域 (myRange)。区域设定之后,用 Merge方法合并两个单元格。

Set myTable = ActiveDocument.Tables(1)
Set myRange = ActiveDocument.Range(myTable.Cell(1, 1) _
.Range.Start, myTable.Cell(1, 2).Range.End)
myRange.Cells.Merge

说明
使用带 Rows 或 Columns集合的 Add方法添加一行或一列单元格。
使用 Selection对象的Information属性返回当前行号和列号。下面的示例改变选中部分第一个单元格的宽度,再显示单元格的行号和列号。

If Selection.Information(wdWithInTable) = True Then
With Selection
.Cells(1).Width = 22
MsgBox "Cell " & .Information(wdStartOfRangeRowNumber) _
& "," & .Information(wdStartOfRangeColumnNumber)
End With
End If
laurenceluan
2013-12-25 · TA获得超过9289个赞
知道大有可为答主
回答量:9443
采纳率:50%
帮助的人:2846万
展开全部
你确认 你这段代码 有问题? 我怎么没看出来啊?
你的工作不中 确实 有 sheet1 、sheet2 这样的工作表?
整个代码 就这些?没有其他代码?遇到问题 点调试 停留在什么地方?
看看下面的代码 在你那里运行如何?
Sub test()
For i = 1 To 3
For j = 1 To 4
If Sheet1.Cells(i, j) <> "" Then
Sheet2.Cells(i, j) = Sheet1.Cells(i, j)
End If
Next j
Next i
End Sub
追问
Sheet2.Cells(i, j) = Sheet1.Cells(i, j)/3*2不好意思,上面漏了一点,Sheet2.Cells(i, j) = Sheet1.Cells(i, j)/3*2
我想计算sheet1.cells(i,j)除以3乘以2的值放在sheet2.cells(i,j),运行时提示类型不匹配!错误13!
追答
那也没有问题啊?
不知道 你选择的答案 与你实际的情况 以及你所叙述的问题 有什么关系!
如果 你只有 这样的代码的话 请复制 我粘贴的代码 到你的 vbe 窗口中 并修改 你所说的运算 应该能正常运行啊……
该不是 你实际 写代码的时候 哪个地方写错了吧?比如 应该是 英文状态 你却使用了 中文输入?符号有错?空值 双引号 应该是 英文状态的双引号 中间不能有空格 表面上看 你的代码 没有问题……
你选择的答案别误导了大家……
神仙才能知道 你到底除了什么问题了啊………………God
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
平阳虎01
高粉答主

2013-12-25 · 每个回答都超有意思的
知道大有可为答主
回答量:3.7万
采纳率:75%
帮助的人:4921万
展开全部
Sub ww()
Dim i, j%
For i = 1 To 3
For j = 1 To 4
If Sheet1.Cells(i, j) <> "" Then
Sheet2.Cells(i, j) = Sheet1.Cells(i, j)
End If
Next
Next
End Sub
写出来后才发现已经有了答案!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
biaotiger1
2013-12-25 · TA获得超过1166个赞
知道小有建树答主
回答量:1570
采纳率:33%
帮助的人:429万
展开全部
if len(sheet1.cells(i,j)) then

一般 用上面这句。

追问
if len(sheet1.cells(i,j)) then  ?
不明白呀!len(sheet1.cells(i,j))不是返回字符串长度吗?不是trun或者是flase呀!那你if 语句怎么判断?
追答
哈,
if len(sheet1.cells(i,j))=0 then

这样
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式