vba中text的问题和VBA自动调用的问题

问题:vba中text与value?
补充:
excel2013 中,可以运算的值和显示值。
我想凡是单元格数值为3,就显示为B
if [a1].value=3 then
[a1].text="B" 
end if    
运行时,出现424错误,“要求对象”的提示。怎么回事?
后改为:
If [a1] = 3 Then
 [a1].NumberFormatLocal = "b"
end if
但是,这个单元格就出现显示值为43,value值1900/1/5
又改为:
If [a1] = 3 Then
 [a1].NumberFormatLocal = "B"
end if
运行时,出现1004错误,不能设置range的NumberFormatLocal属性。怎么回事?


回答:
将这句改成下面的格式试一下:
[a1].NumberFormatLocal = """B"""


问题2:VBA自动调用另一张表中满足某些条件的单元格的数据?
补充:
在sheet1表中的A1和A2单元格分别输入数据,自动在sheet2表中寻找与该数据一致的单元格(例如sheet2的A1和B1),并将该单元格所在的行中指定的某些单元格(例如sheet2的C1和D1)的数据赋予sheet1表的C1和D1单元格。


回答:


1.首先定义个过程,做到通用
Private Sub FindAndCopy(ByRef iSoureRange As Range, iTargetSheet As Worksheet, iTargetRange As Range)
        'iSoureRange 代表需要查找数据的单元格,比如楼主栗子中的Sheet1中A1 单元格
        'iTargetSheet 代表需要查找数据的表格,比如楼主栗子中的Sheet2
        'iTargetRange 代表需要复制数据的单元格,比如楼主栗子中的Sheet1中的C1单元格
        Dim iRange As Range '临时变量
        If iSoureRange Is Nothing Or iTargetSheet Is Nothing Or iTargetRange Is Nothing Then Exit Sub '三个参数必须指定对象,否则直接退出
        Set iRange = iTargetSheet.UsedRange.Find(iSoureRange.Value, LookAt:=xlWhole) '查找目标表格中是否存在数据
        If Not iRange Is Nothing Then '找到数据
            iTargetRange.Value = iRange.Value '复制数据到目标单元格,此处仅复制数值,不复制格式等信息
        Else
            MsgBox "表格< " & iTargetSheet & " >中未能查找扫到数据 < " & iSoureRange.Value & " >!" '未能查找到则报错
        End If
End Sub
2. 创建调用前一个过程的代码,比如在Sheet1中创建一个按钮,编辑以下代码:
Private Sub CommandButton1_Click()
    Call FindAndCopy(ActiveSheet.Range("A1"), ThisWorkbook.Sheets("Sheet2"), ActiveSheet.Range("C1"))
End Sub
补充:看到楼主给其他人的补充说明,原来是这样,那就要将上面的代码改一改了。
1.首先定义个过程,做到通用
Private Sub FindAndCopy(ByRef iSoureRange As Range, iTargetSheet As Worksheet, iTargetRange As Range)
        'iSoureRange 代表需要查找数据的单元格,比如楼主栗子中的Sheet1中A1 单元格
        'iTargetSheet 代表需要查找数据的表格,比如楼主栗子中的Sheet2
        'iTargetRange 代表需要复制数据的单元格,比如楼主栗子中的Sheet1中的C1单元格
        Dim iRange As Range, TempRange As Range  '临时变量
        If iSourceRange Is Nothing Or iTargetSheet Is Nothing Or iTargetRange Is Nothing Then Exit Sub '三个参数必须指定对象,否则直接退出
        Set iRange = iTargetSheet.Range("A1").End(xlDown)'找到A列最后一行单元格
        Set iRange = iTargetSheet.Range("$A$1:$A$" & iRange.Row)'获取在目标表格中A列的单元格区域
        For Each TempRange In iRange '遍历目标表格中的A列单元格
            If TempRange.Value = iSourceRange.Value And TempRange.Offset(0, 1).Value = iSourceRange.Offset(0, 1).Value Then'比较两列数据,如果A和B列均和查找数据的两列相等
                iTargetRange.Value = TempRange.Value'则分别复制到目标单元格的两列
                iTargetRange.Offset(0, 1).Value = TempRange.Offset(0, 1).Value
                Exit For'找到第一个后退出循环,避免耗费过长时间,也意味着目标表格中不能存在重复值,如果存在重复值,就始终只找到第一个
            End If
        Next TempRange
End Sub
2. 创建调用前一个过程的代码,比如在Sheet1中创建一个按钮,编辑以下代码:
Private Sub CommandButton1_Click()
    Call FindAndCopy(ActiveSheet.Range("A1"), ThisWorkbook.Sheets("Sheet2"), ActiveSheet.Range("C1"))
End Sub
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值