VBA 加密方式

标签 vba excel

我在 VBA 上编写了一个非常简单的 Ceaser Cipher 加密算法。它接受一个字符串值并应用 x 移位。

很满意。但是,想把它带到下一步,但我不确定它是否可行。

我想在另一个模块中调用这个加密函数并传递一个字符串值来加密。

IE。我想做的是这样的

Private Sub Encryption()
   'Encryption method of string Var
End Sub

---- 和另一个子 ----
Private Sub function()
   Dim Text as String
   Text = "Hello"
   Encryption(Text)
End Sub

所以在这个例子中,我定义了一个加密任何字符串变量的方法。在另一个函数中,我定义了一个字符串并将其初始化为“Hello”。然后对其调用加密功能...不确定这在 VBA 中是否可行?

当我在函数中调用函数时,我不确定如何传入变量。请问有什么建议吗?

最佳答案

您需要更改 Sub Routine to a Function .另外,去掉 Private关键字,因为这将不允许您跨不同的模块调用它。

所以改变这个:

Private Sub Encryption()
   'Encryption method of string Var
End Sub

对此:
Function Encryption(ByVal inputString as String) As String
   'Encryption method of string Var
End Sub

现在,在您的函数中,您需要将保存第一个字符串(要加密的字符串)的任何变量更改为新创建的变量 inputString .在这方面很难为您提供帮助,因为您没有提供 Sub Encryption() 的完整代码.

此外,请确保您设置了 功能 将自己命名为函数中新加密的文本。因此,您的函数基本上如下所示:
Function Encryption(ByVal inputString as String) As String
   'Encryption method of string Var
    Encryption = 'the value to return from this function        
End Sub

现在,您的第二个子将如下所示:
Private Sub test()
   Dim Text as String, encryptedText as String
   Text = "Hello"
   encryptedText = Encryption(Text)
End Sub

您只需创建新变量 encryptedText等于新函数 Encryption .

因此,Sub 之间的主要区别和 Function是一个函数将返回值。它们基本上都以相同的方式处理代码。

方法 2(编辑)

在重新考虑您的问题后,我相信您是在使用您的 Sub 通过将变量传递为 ByRef 来获取加密文本。 ,并且您可能只是因为 Private 而无法调用 Sub关键词。

如果这是发生了什么,那么您可以简单地删除 Private 关键字,它应该可以按预期工作。

所以你的 Sub 应该是这样的:
Sub Encryption()    '<-- Notice, no Private scope
   'Encryption method of string Var
End Sub

或者
Public Sub Encryption()
   'Encryption method of string Var
End Sub

你应该采取look at this有关范围的其他阅读。

关于VBA 加密方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51976371/

相关文章:

mysql - 如何从 Outlook Express 更新 MySQL 数据库?

excel - 在 Excel 列中对字母数字单元格求和

excel - 如何在 Excel 中根据多个 If 计算总和?

java - 如何使用 SXSSF 写入现有文件?

excel - VBA 集合检索数据但不显示值

vba - 如何从 VBA 中的子文件夹计算工作簿中的行数?

vba - 如何以编程方式中断所有错误?

VBA xlCount 函数

excel - 使用 VBA 使用 Excel 获取垂直合并单元格的开始范围和结束范围

VBA 绘制边框