我一直在寻找,但找不到问题的答案。我的VBA技能很差。所以我在工作中使用VBA和内部系统,所以不使用excel。我正在使用以下宏:
' Common variable declarations
Dim ibmCurrentTerminal As IbmTerminal
Dim ibmCurrentScreen As IbmScreen
Dim hiddenTextEntry As String
Dim returnValue As Integer
Dim timeout As Integer
timeout = 15000
Set ibmCurrentTerminal = ThisFrame.SelectedView.control
Set ibmCurrentScreen = ibmCurrentTerminal.Screen
'---------------------------------------------------------------------
ibmCurrentScreen.SendControlKey (ControlKeyCode_F12)
ibmCurrentScreen.SendKeys ("224")
ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)
ibmCurrentScreen.SendControlKey (ControlKeyCode_Erase_Eof)
ibmCurrentScreen.Paste
ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)
因此我们从一个程序中复制一个数字,并希望使用此宏在另一个程序中进行检查。问题是复制的数字需要7个字符长,例如“1234567”,当我们粘贴它时,但有时我们复制的数字是5个字符长,例如“12345”。
我想要做的是让宏在将其粘贴到其他程序之前添加“00”,例如“0012345”,如果数字短于7个字符。请记住,这需要在宏中完成,因为我们不使用任何excel来保存单元格中的信息。
我的问题是如何将其编程到宏中,关键部分是
ibmCurrentScreen.Paste
ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)
谢谢
答案 0 :(得分:0)
您应该可以使用Format()
功能执行此操作,如下所示:
ibmCurrentScreen.SendControlKey (Format(ControlKeyCode_Transmit, "0000000"))
答案 1 :(得分:0)
这个解决方案解决了我的问题。需要从剪贴板中获取信息。注意:该解决方案没有以任何方式使用Excel,这使得它有点困难。
' retrieve the value from the clipboard
Dim textFromClipboard As String
Dim objData As New MSForms.DataObject
objData.GetFromClipboard
textFromClipboard = objData.GetText()
' Format the value to have leading zeros
Dim formattedText As String
formattedText = Format(textFromClipboard, "0000000")
' Enter the formatted text to the terminal and hit enter
ibmCurrentScreen.SendKeys (formattedText)
ibmCurrentScreen.SendControlKey (ControlKeyCode_Transmit)
End Sub