什么是合适的形状名称,因为我的例程没有说?


0

我在网上找到了以下例程: http://www.ozgrid.com/forum/showthread.php?t=77662

这个例程不起作用因为我不知道形状名称。任何人都可以告诉我一个矩形框的形状名称是什么?

Function SetShapeText(s As String, sShpName As String) 
s = "some text"
Dim i As Integer 

ActiveSheet.Shapes(sShpName).Select 

With Selection 
    .Text = "" 
    For i = 0 To Int(Len(s) / 255) 
        .Characters(.Characters.Count + 1).Text = Mid(s, 255 * i + 1, 255) 
    Next 
End With 
End Function 

它出错在这一行:ActiveSheet.Shapes(sShpName).Select


1
你需要看一下形状。或者打印形状名称。或者猜猜看 Rectangle 1 这也是一个函数,所以你需要将形状的名称作为字符串传递给函数。
Raystafarian

看到上面的新代码,矩形1不起作用。我的格式是否正确?
DanM

你不可以。该 sShpName 是函数使用的变量,你不能改变它。您需要使用形状名称作为字符串调用该函数。你想做什么?
Raystafarian

Answers:


2

您需要运行第一个来获取名称。第二个在这里向您展示如何调用您在那里的功能。

Sub myshapes()
Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
    Debug.Print shp.Name
    Next
End Sub

Sub sendit()
Dim shpnm As String
shpnm = "Rectangle 1"
Dim mystring As String
mystring = "blah blah"
Dim x As Variant
x = SetShapeText(mystring, shpnm)

End Sub

看,你有一个需要两个输入的函数:s,sShpName

要使用你需要调用的函数,就像上面一样将参数传递给它。没有理由在功能中改变任何东西。


我尝试了你编码的,在线下失败(仍然)ActiveSheet.Shapes(sShpName)。选择,我保留了该功能并添加了你的两个潜艇。
DanM

您没有正确使用该功能。你的...是 s?你的形状名称是什么?你想达到什么目的?
Raystafarian

我在上面的函数中添加了s =“some text”。我想要完成的是查询用户的文本字符串,然后将其放入一个矩形文本框(可能需要超过255个字符,这就是为什么我使用文本框而不是注释)在当前单元格中
DanM

好吧,我已经回答了你的初步问题。看起来你在这里很丢失,也许你应该谷歌并学习如何去做,而不是依靠你找到的东西。
Raystafarian

是的,我绝对迷路了。所以我查询用户的文本字符串,我知道如何做到这一点。但调用文本框例程,我不知道该怎么做。我只想要一个文本字符串出现在当前单元格的矩形框中。
DanM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.