是否可以使用输入框从excel工作表中选择一行,然后从该行中选择特定的单元格值来填充VBA代码的其余部分?
我正在学习使用VBA从excel制作PPT。我已经编写了整个函数,但我想让用户更容易使用它。因此,我想看看是否可能,如果我创建一个输入框,用户在其中添加行号,然后选择该行中的特定单元格在PPT中添加值 例如,假设用户在输入框中输入“208”,单元格B208、I208、J208中的值用于如下所示的函数是否可以使用输入框从excel工作表中选择一行,然后从该行中选择特定的单元格值来填充VBA代码的其余部分?,excel,vba,powerpoint,Excel,Vba,Powerpoint,我正在学习使用VBA从excel制作PPT。我已经编写了整个函数,但我想让用户更容易使用它。因此,我想看看是否可能,如果我创建一个输入框,用户在其中添加行号,然后选择该行中的特定单元格在PPT中添加值 例如,假设用户在输入框中输入“208”,单元格B208、I208、J208中的值用于如下所示的函数 ppSlide.Select Range("B208").Copy ppSlide.Shapes.Paste With pppres.Slides(1).Shapes(1)
ppSlide.Select
Range("B208").Copy
ppSlide.Shapes.Paste
With pppres.Slides(1).Shapes(1)
.Top = 30
End With
ppSlide.Select
Range("I208").Copy
ppSlide.Shapes.Paste
With pppres.Slides(1).Shapes(2)
.Left = 140
.Top = 73
End With
ppSlide.Select
Range("J208").Copy
ppSlide.Shapes.Paste
With pppres.Slides(1).Shapes(3)
.Left = 480
.Top = 73
End With
因此,用户只需将其添加到输入框中一次,就可以在15-16个不同点处更改值。而且不必弄乱代码。我想这就是你的想法——或多或少。请看一看
Sub TestPPslide()
Dim ppPres As Object ' which type of object?
Dim ppSlide As Object ' which data type?
Dim Inp As Variant
Dim R As Long
R = 2
Do
Inp = InputBox("Enter a valid row number.", "Slide selector", R)
' test if Inp is valid
If IsNumeric(Inp) Then
R = Int(Val(Inp))
If R > 1 And R < 100 Then Exit Do
Else
If Len(Inp) = 0 Then Exit Sub ' user presserd cancel
End If
Loop
SetSlide R, ppSlide, ppPres.Slides(1)
End Sub
Private Function SetSlide(ByVal R As Long, _
ppSlide As Object, _
PresSlide As Object) As Boolean
Dim Clm As Variant
Dim Left As Variant, Top As Variant
Dim C As Long
Clm = Array("B", "I", "J")
Left = Array(0, 140, 480)
Top = Array(30, 73, 73)
For C = 0 To UBound(Clm)
Cells(R, Clm(C)).Copy
ppSlide.Shapes.Paste
With PresSlide.Shapes(C + 1)
.Left = Left(C)
.Top = Top(C)
End With
Next C
End Function
子TestPPslide()
Dim ppPres作为对象“哪种类型的对象?”?
Dim ppSlide作为对象“哪种数据类型?”?
作为变体的Dim-Inp
变暗,变长
R=2
做
Inp=InputBox(“输入有效的行号。”,“幻灯片选择器”,R)
'测试Inp是否有效
如果是数字(Inp),则
R=Int(Val(Inp))
如果R>1且R<100,则退出Do
其他的
如果Len(Inp)=0,则退出Sub'用户按取消
如果结束
环
固定滑块R、ppSlide、ppPres.滑块(1)
端接头
专用函数SetSlide(ByVal R,长度为_
ppSlide作为对象_
按lide作为对象)作为布尔值
Dim Clm作为变体
变光左侧为变型,顶部为变型
尺寸C与长度相同
Clm=数组(“B”、“I”、“J”)
左=阵列(0、140、480)
顶部=阵列(30,73,73)
对于C=0至UBound(Clm)
细胞(R,Clm(C))。复制
ppSlide.Shapes.Paste
带冲压形状(C+1)
.左=左(C)
.Top=Top(C)
以
下一个C
端函数
我不知道您的对象是什么,它们是来自Excel还是来自PP。因此,我可能无法正确处理这些对象。或者,您自己的代码在这方面可能存在一些不一致之处。将我的代码作为如何设置它的指南
Main
。不要只是把一个想法一个接一个地串联成一个过程Main
必须包含任务的输入。然后,它必须将作业交给下一个程序,在这种情况下,下一个程序将子SetSlide
修改后的两个对象反馈给下一个子例程,以便主或下一个子例程进一步注意
选择
或激活
。您可以访问每个对象的每个部分,而无需执行此类操作是的,这是可能的。你试过了吗?现在我只能选择一个特定的单元格,不知道如何从输入框中的一个值中选择多个单元格。你可以将
文本框值指定给一个变量,然后为列和变量定义每个范围,例如,Dim inputrownNumber只要长
然后inputrownNumber=TextBox1.Text
然后范围(“B”和inputrownNumber)
。我需要知道更多信息,例如工作表上的文本框或用户表单,用户是否会单击按钮使其工作等,以便能够提供合适的答案。。