gpt4 book ai didi

string - 在 VBA 函数中返回带有上标字符的字符串

转载 作者:行者123 更新时间:2023-12-04 19:59:37 27 4
gpt4 key购买 nike

我在 Excel 中有一个宏,它将十进制度值(赤经)转换为带有小时(h)、分钟(m)和秒(s)的天文小时角。
有什么办法可以返回带有上标缩写h,m,s的字符串?

这是我的 Excel 宏:

Function Convert_Hours(Decimal_Deg) As Variant
With Application
hours_dec = Decimal_Deg / 360 * 24
hours = Int(hours_dec)

minutes_dec = hours_dec - hours
minutes = Int(minutes_dec)

seconds = minutes_dec - minutes

Convert_Hours = " " & hours & "h " & minutes & "m " & Round(seconds, 2) & "s "
End With
End Function

因此,例如在单元格 A1 中,我写 176.7854在单元格 B1 =Convert_Hours(A1) .那写 11h 0m 0.79s进入单元格 B1。但我想要的是:11h 0m 0.79s

我不想(!)想用 VBA 引用一些选定的单元格,然后应用类似 c.Font.Superscript = True 的东西,这是在 VBA 中搜索上标字符串时的标准答案。我的功能 Convert_Hours()应该自己返回一个格式化的字符串。

先感谢您!

最佳答案

由于字符串只能包含单个字符而无需格式化,因此无需格式化即可实现此目的的唯一方法是找到表示上标小写字母的 Unicode 字符。

上标拉丁字母没有完整的 Unicode block 。所以我们需要从不同的区 block 中挑选它们。我们可以在 Latin_script_in_Unicode 中找到概述.

我们可以在 Spacing Modifier Letters 中找到 ʰ 和 ˢ .我们可以在 Phonetic Extensions 中找到 ᵐ .

如果我们找到了这些字符,我们必须知道如何将它们连接到 VBA 中的字符串中。 .为此,ChrW可以使用功能。它需要字符的十进制代码。

所以

...
Convert_Hours = " " & hours & ChrW(688) & " " & minutes & ChrW(7504) & " " & Round(seconds, 2) & ChrW(738)
...

几乎会得到你想要的。但是上标字母的大小会有所不同,因为它们来自不同的 Unicode block 。所以我更喜欢在字符串中使用默认字母并稍后将它们格式化为上标。当然,这不能在用户定义函数 (UDF) 中完成。

根据@arcadeprecinct 的评论
...
Convert_Hours = " " & hours & ChrW(&H2B0) & " " & minutes & ChrW(&H1D50) & " " & Round(seconds, 2) & ChrW(&H2E2)
...

也可以使用十六进制。

关于string - 在 VBA 函数中返回带有上标字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40780170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com