我有这个代码,但它没有按我的意愿工作。
这就是我要的:
- 如果我在单元格A1,A2或A3中写入内容(在工作表1中),则会在工作表(2)中创建一个文本框。这有效,但现在我希望文本框的位置在单元格B1,B2,B3中改变。
我尝试使用下面的代码来做到这一点,但我认为我定义Range("B" & CStr(i))
的方式可能存在问题,因为当我使用B1时它起作用。
我需要改变代码两个不同的做两件事:
1-如果我写在B1" cliente"我希望带有来自A1的文本的texbox在toppos = 150中创建,如果我将其更改为" financeiro"我希望在toppos = 20中创建texbox。
2-如果B1和B2有" fianceiro"我希望与A1和A2相关的文本框彼此相邻。 有人能帮我吗? 谢谢
所以这就是我想要的: - 使用工作表2上的单元格A1到A3的内容创建的文本框; - 如果我更改内容,应更新文本框的内容,如果我删除该值,则应删除文本框; - 文本框的位置应该随着我在B列中选择的选项而改变。我希望工作表(2)有4个"切片",第一个是选项" financeiro" ,因此与该页面相关的所有文本框都应位于工作表中的特定位置,例如,位置20,如果另一方面该文本框来自选项" cliente",文本框应该在" cliente",位置150的切片中。 - 而且B列中的每个选项可能有多个文本框,所以我希望同一选项中的文本框并排显示。
Sub removercaixas(strName As String)
Dim shp As Shape
For Each shp In Worksheets(2).Shapes
If shp.Type = msoTextBox And shp.Name = strName Then shp.Delete
Next shp
End Sub
Sub criarcaixastexto(strName As String)
Dim wsActive As Worksheet
Dim box As Shape
Set wsActive = Worksheets(2)
Dim leftpos As Long
Dim toppos As Long
Dim i As Long
For i = 1 To 3
If Worksheets(1).Range("B" & CStr(i)).Value = "financeiro" Then
toppos = 20
ElseIf Worksheets(1).Range("B" & CStr(i)).Value = "cliente" Then
toppos = 150
ElseIf Worksheets(1).Range("B" & CStr(i)).Value = "processos internos" Then
toppos = 250
Else:
toppos = 350
End If
Next i
Select Case strName
Case Is = "$A$1"
leftpos = 50
Case Is = "$A$2"
leftpos = 200
Case Is = "$A$3"
leftpos = 350
End Select
Set box = wsActive.Shapes.AddTextbox(msoTextOrientationHorizontal, leftpos, toppos, 100, 50)
box.TextFrame.Characters.Text = Worksheets(1).Range(strName).Value
box.Name = strName
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Select Case Target.Address
Case "$A$1", "$A$2", "$A$3"
removercaixas (Target.Address)
If Len(Target) > 0 Then criarcaixastexto (Target.Address)
Case Else
Exit Sub
End Select
End Sub
答案 0 :(得分:2)
我不确定OP的某些逻辑或者他想要完成的事情。我会创建一个函数来创建文本框,如果需要,并返回对它的引用,而不是添加和删除文本框。
cocoapods 1.4.1 beta 2