我有UserForm1,它是一个多用户表单,我试图访问通过Module1中的子表单中收集的信息。这个子将需要访问几个不同的值,并使用这些值做不同的事情,所以这将是一个多部分问题。
For X = 1 To UserForm1.LocalOffer.Value
Range("B" & X).Value = UserForm1.Controls("LocalTier" & Tier).Value
我正在使用Excel 2013,但该文件将在Excel 2007上运行
编辑: 事实证明,问题1是通过不使用X按钮关闭用户窗体而是通过添加一行来在最后一个按钮时隐藏用户窗体来修复的。事实证明我的第二个问题的代码在我过去的时候工作得很好。唯一剩下的问题是最后一个我没有想法的问题。
答案 0 :(得分:1)
从评论中我看到你不再需要了解第1点和第2点,因此我将限制我对第3点的回答。
这个问题的最后一部分如果我在userform中有一个包含日期格式为1/18/2015的日期的文本框,我有办法抓住那个日期的一部分,例如一天或只是一年中的最后一位数?
您可以使用字符串操作或日期转换。
我们假设文本框名为myDateTextbox
在VBA提供的字符串操纵器中,我会引用Left()
和Right()
。
例如:
last_digit_of_the_year = Right(myDateTextbox.Text, 1)
将返回字符串的最后一个字符。另一方面:
first_digit = Left(myDateTextBox.Text,1)
将返回字符串的第一个数字。
您可以使用Len(myDateTextBox.Text)
内置函数返回字符串的当前长度。
您只需使用CDate()
功能将字符串转换为日期即可。请注意,如果传递无效字符串,此函数将返回错误。如果您的文本框包含24/01/1990
,则可以先将字符串转换为日期:
myDate = CDate(myDateTextBox.Text)
因此,您可以像这样检索日,月或年:
myYear = Year(myDate)
myMonth = Month(myDate)
myDay = Day(myDate)
请注意, CDate会根据系统的区域设置识别日期格式。。因此,如果TextBox中的格式与您的系统中的格式不同,则考虑在之前操作字符串以使其适应正确的格式。例如,如果您的系统具有DD / MM / YYYY设置且文本框显示MM / DD / YYYY类型,则可以按如下方式“调整”:
wrongFormat = myDateTextBox.Text
splittedDate = Split(wrongFormat,"/")
goodFormat = splittedDate(1) & "/" & splittedDate(0) & "/" splittedDate(2)
如果wrongFormat
是1/18/2014
,但您的系统希望将其读作18/1/2014
,那么它现在已经很好了,因为goodFormat
将等于18/1/2014
之后分裂和重建。