Excel中的一段VBA代码解读

Excel中的一段VBA代码解读,第1张

Function IsCanGetCorrectRegister() As Boolean

'/////////////////////////////////////////////////////////////////////////

'能否从本计算机得到正确的注册码

Dim bReturn As Boolean

Dim longVolInfo As Long

Dim strRegisterCode, strStandardRegister As String

Dim strRegisterCodeFromFile As String 50

Dim strThisWorkbookPath As String

‘ ---------------上面这些都是声明要用的变量----------------------

bReturn = False ’赋值为false

longVolInfo = GetVolInfo(4866683, 0)’调用GetVolInfo()方法,返回值存到longVollnfo

strRegisterCode = ProductCecretCode(longVolInfo)'调用ProductCecretCode方法

strThisWorkbookPath = GetThisWorkbookPath ‘设置工作簿路径(可能是已经在哪里设置好了全局变量,这里直接赋值)

Open strThisWorkbookPath + "\" + "infotxt" For Random As #1 ’打开路径下来的 infotxt

文件

Get #1, 1, strRegisterCodeFromFile ‘把文件内容读入变量strRegisterCodeFromFile

Close #1 ’关闭文件

strStandardRegister = CStr(Left(strRegisterCodeFromFile, Len(strRegisterCode)))‘调用方法并取得返回值

If StrComp(strRegisterCode, strStandardRegister, vbBinaryCompare) = 0 Then’调用方法,并判断返回值是0,则bReturn=true,否则是false

bReturn = True

Else

bReturn = False

End If

IsCanGetCorrectRegister = bReturn‘把最终结果赋值给变量

End Function

----总体来说应该是验证什么东西的子程序,程序中到处调用其它子程序来运算--

部分代码有误,修正参考如下:

Public Sub 自动记录调查数据()

Dim temp As Integer

Dim count As Integer

temp=Sheets("数据表")[A1]CurrentRegionRowscount

count = temp - 3 '

Sheets("问卷")Select

Range("A50:H50")Select

SelectionCopy '

Sheets("数据表")Activate

Rows(temp + 1)Select

ActiveSheetPaste

Cells(temp + 1, 13)Value = count + 1

Sheets("问卷")Select

ApplicationCutCopyMode = False

MsgBox "记录已成功保存,谢谢!", vbOKOnly, "确定"

End Sub

希望能帮上忙!

Call vba_start 是指执行 vba_start 这个程序

vba_start 是另外一个 Sub过程

你要贴的 是 vba_start 这个程序的代码

如果没有,就要 添加

在你定义的程序中,其实这个时候 A5 只是一个变量名称,并不代表单元格 A5。

因为你没有强制变量声明,所以默认 A5 是一个 Variant 类型的变量。如果你在所有子程序的前面写上一句:

Option Explicit

然后你就可以发现这个错误了!

因为是一个默认的Variant 变量,此时的值肯定为 NULL。所以才会得到这个结果。

你再试试看把这句代码改成如下的语句会是什么结果:

x = Mid(Range("A5"), 1, 1)

希望能够帮到你!

你用function的话,这个是个函数,是个值,当然不能在那儿孤零零的使用。

要这样用,a=char_a("[n]",3),要赋予某个变量。

而sub就不一样了,本身只是个子程序,调用即可。

call sub(a,b)或者sub a,b

修改后的结果,楼主查收:

Sub char_a(q As String, w As Single)

If Len(q) < 0 Or w <= 0 Then

MsgBox "函数参数错误"

Exit Sub

Else

With UserForm1 '估计楼主是在某个窗体中使用的,姑且定为userform1

i = TextBox1SelStart

n = Left(TextBox1Value, TextBox1SelStart)

m = Right(TextBox1Value, Len(TextBox1Value) - TextBox1SelStart)

TextBox1Value = n & q & m

TextBox1SelStart = i + w

End With

End If

End Sub

各个模块使用如下:

Private Sub Label1_Click()

Call char_a("[n]", 3)

End Sub

Private Sub Label2_Click()

Call char_a("[p##]", 4)

End Sub

Private Sub Label3_Click()

Call char_a("[mp##]", 5)

End Sub

运行成功!

zhouziyan2001 ,离线解释:

Dim i As Long, j

'定义变量

For i = 1 To Sheet8Range("a65536")End(xlUp)Row

'运算从Sheet8的第一行到第一列的最后一个有内容的单元格所在列

'对后面内容,你可以查找END()的帮助来理解

Sheet3Cells(i, 1)Formula = "=MATCH(Sheet8!A" & i & ",Sheet1!A:A,0)"

'本句为了节省代码,直接借用了EXCEL的公式来查找符合条件的单元格所在的行;

'函数MATCH就是查找函数

'否则,要自己编写查找循环代码,由于VBA是解释执行,会导致效率很低,

'Formula就是把后面的公式写到该单元格中并运算

j = Sheet3Cells(i, 1): Sheet3Cells(i, 1) = ""

'找到后将值(也就是查找到的行)传递给变量j,

If IsNumeric(j) Then

Sheet1CellsRows(j)Cut

Sheet3Rows(i)Insert

Sheet1CellsRows(j)Delete

End If

'IF语句用来将该行复制,粘贴在SHEET3的相关行中,结束后将该行删除

'如果在同一工作表中,该三行语句可简化为: CellsRows(j)Cut Rows(i)

Next i

'运行下一行

以上就是关于Excel中的一段VBA代码解读全部的内容,包括:Excel中的一段VBA代码解读、求问VBA编程中出现错误:缺少子程序、函数或属性、Call vba_start VBA显示子程序或函数未定义,代码如下,请问哪里出了问题了,VBA小白求解答,谢谢。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9687820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存