excel vba 数组中第1位字符为0,赋给单元格时如何将0保留?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel vba 数组中第1位字符为0,赋给单元格时如何将0保留?相关的知识,希望对你有一定的参考价值。

excel vba 数组中,某一列数为字符型,均为以0开头的数字型字符,用变量类型函数检查也均是字符型,但将数组中的值赋给单元格时,单元里的数字前面的0就没有了,用变量类型函数检查单元格变成了数值型数据。用在数组前加" "的办法也不管用,用cstr/str函数也没有搞出来,我要在单元格里保留第1位的0,将其作为字符型数据,怎么处理?请给出VBA代码,谢谢

在字符串的前面加',如下代码

Sub a()
    Dim str As String
    str = "012345676"
    [A1] = "'" & str
End Sub


或者将单元格格式设置为 文本

Sub b()
    Dim str As String
    str = "0123456789"
    
    [A2].NumberFormatLocal = "@"    '将单元格格式设置为 文本
    
    [A2] = str
End Sub

 将单元格格式设置为00000000

Sub c()
    Dim str As String
    str = "00123456789"
    
    '[A3].NumberFormatLocal = "!00"   '如果前面多个0,只想要一个0用这行。
    [A3].NumberFormatLocal = Application.WorksheetFunction.Rept("0", Len(str))  '如果前面多个0,保留多个0用这行。
    
    [A3] = str
End Sub

参考技术A 直接将单元格事先设置为文本格式

excel的VBA怎么实现把表中鼠标选中的1个格子的纵横值赋给2个变量?

我要实现的功能是一打开那个EXCEL表,我每次选中1个格子,在VBA中就能把这个格子的纵横坐标取出来,分别赋给2个变量.比如我选到的是B5这个格子,那么VBA中就能把这个选中格子的地址取出来,把B和5分别赋给事先设的2个string变量.然后我就可以用这2个变量来做其它很多事情了.
我只知道Auto_Open 过程可以支持开excel表就运行过程中的语句
activecell.address 可以得到当前选中格子的地址,但它得到的是"$B$5"这样的格式,不好分开.请教简单方法

$B$5返回的是绝对引用地址
返回B5(也叫相对引用地址)格式单元格的地址用法是这样的:ActiveCell.Address(False, False)
只返回行号的是:ActiveCell.Row
只返回列号的是:ActiveCell.Column
返回列号的字母的是:Chr(ActiveCell.Column+Asc("A")-1)或Chr(ActiveCell.Column+64)
引用单个格子用Cells(行号,列号),
或Range(列字母 & 行号)
引用成片格子用Range(Cells(行号,列号),Cells(行号,列号))
或Range(Range(列字母 & 行号),Range(列字母 & 行号))
参考技术A Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
StrRow = Target.Row
StrCol = Target.Column
End Sub

以上是关于excel vba 数组中第1位字符为0,赋给单元格时如何将0保留?的主要内容,如果未能解决你的问题,请参考以下文章

VBA 使用字符串数组作为子字符串参数 InStr 函数 (Excel)

java的swing编程,Jtable的单元格如何赋值

VBA中如何把A这列数赋值给数组?谢谢

以编程方式(VBA,C#)将数组字符串设置为范围时,奇怪的单元格中字符数限制

excel的VBA怎么实现把表中鼠标选中的1个格子的纵横值赋给2个变量?

EXCEL VBA提取内容到指定位置