vba中text的问题和VBA自动调用的问题
2015-12-19 18:33
447 查看
问题: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
补充:
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
相关文章推荐
- 谈下自己的性格,谈下vbs的一些代码
- VBA实现数组Array与集合Collection互换
- VBA如何判断一个对象是否为空
- VBA中dim,static和public,private的区别
- VBA中Dictionary对象使用小结
- excel VBA 字典与集合(Dictionary与Collection)
- VBA中集合collection方法的基础知识
- VB中ByVal与ByRef有什么区别
- vba excel 的宏
- 利用VBA把PowerDesigner的comment复制到name
- 利用VBA把PowerDesigner的name复制到comment
- 行情列表重构 TabBar&NavBar&tableView
- 解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
- 利用VBA从Excel导入数据模型到PowerDesigner
- 利用VBA把PowerDesigner导出到Excel
- VBoxManage命令详解
- 函数模块:CTVB_COMPARE_TABLES--两个表中删除/变更/粘贴分解
- VB6.0 读取Excel文件并返还数据集RecordSet
- vb学习基础之val函数与val(&HFFFF) 的理解
- Phone_DVB+OTT项目首页