Excel 创建新工作表时自动增加文本框值
我想让我的文本框值更灵活。因此,当我创建新图纸时,它们的值会按指定的数字递增 基于此,我使用了以下代码:Excel 创建新工作表时自动增加文本框值,excel,vba,Excel,Vba,我想让我的文本框值更灵活。因此,当我创建新图纸时,它们的值会按指定的数字递增 基于此,我使用了以下代码: Sub CivBoxNext() With ActiveSheet Range("D51").Select .Shapes("Civils 3").TextFrame2.TextRange.Characters.Text = ActiveCell.Value + 2 Range("D52").Select .Shapes
Sub CivBoxNext()
With ActiveSheet
Range("D51").Select
.Shapes("Civils 3").TextFrame2.TextRange.Characters.Text = ActiveCell.Value + 2
Range("D52").Select
.Shapes("Civils 4").TextFrame2.TextRange.Characters.Text = ActiveCell.Value + 2
End With
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim ws As Worksheet
j = 0
For Each ws In Worksheets
I = ws.Range("D51").Value
If I > j Then
j = I
End If
Next
ActiveSheet.Range("D51").Value = j + 2
End Sub
接下来,我将其绘制到创建新工作表作为调用方法的代码中:
它可以工作,但只能在下面的一张纸上
之后,我有另外3张纸,这3张纸的数字应该同时改变
我尝试了另一种选择,比如在创建新工作表时更改目标单元格的值,然后从此单元格输入我的文本框
我使用了以下代码:
Sub CivBoxNext()
With ActiveSheet
Range("D51").Select
.Shapes("Civils 3").TextFrame2.TextRange.Characters.Text = ActiveCell.Value + 2
Range("D52").Select
.Shapes("Civils 4").TextFrame2.TextRange.Characters.Text = ActiveCell.Value + 2
End With
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim ws As Worksheet
j = 0
For Each ws In Worksheets
I = ws.Range("D51").Value
If I > j Then
j = I
End If
Next
ActiveSheet.Range("D51").Value = j + 2
End Sub
它来自:
如何在创建新图纸时自动增加单元格值
我是否要立即处理传统的Excel公式而不是VBA?这将合并您的SUB。你能看看它是否满足你的需要吗
Sub Civilssheet()
Application.ScreenUpdating = False
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Worksheets("Civils9")
Dim I As Long
Dim xNumber, valCivics, valCivicsFin As Integer
xNumber = InputBox("Enter number of times to copy the current sheet")
On Error Resume Next
' extract highest Civics worksheet number
For I = 1 To ActiveWorkbook.Sheets.Count
If InStr(1, Sheets(I).Name, "Civils") > 0 Then
valCivics = Val(Replace(Sheets(I).Name, "Civils", ""))
If valCivics > valCivicsFin Then valCivicsFin = valCivics
End If
Next
For I = 1 To xNumber
' add worksheet to the end of existing worksheets
ws.Copy After:=Sheets(Application.Sheets.Count)
' name the new worksheet with the highest value + 1
ActiveSheet.Name = "Civils" & I + valCivicsFin
ActiveSheet.Shapes("Civils 3").TextFrame2.TextRange.Characters.Text = ActiveSheet.Cells(51, 4).Value + 2
ActiveSheet.Shapes("Civils 4").TextFrame2.TextRange.Characters.Text = ActiveSheet.Cells(52, 4).Value + 2
Next
Application.ScreenUpdating = True
End Sub
总是那些床单吗?嗯,我希望有尽可能多的弹性床单。实际上,这些家伙将为Civil和电缆分别制作1张和1张。因此,在本例中,当他们在Civil中创建1个新的时,我希望所有工作表中的值从头到尾递增。当他们创建电缆表时会更容易,因为这是此阵列中的最后一张图纸,所以我可以按照上面的步骤手动执行。看起来您的选项卡创建循环也有一些问题。它只创建最后一个。我可以投票,因为代码本身就可以工作。不幸的是,这不是我想要的。新创建的工作表位于我文档的末尾。我不想那样。我想把这张纸放在Civils 2后面。自动递增功能可以工作,但我还是希望它从这个新的Civils3工作表一直到下一个3个电缆工作表。我已经对新工作表的位置进行了排序。我将ws.Copy放在:=sheetscivills&I+1之后。我还对以下表格进行了增量处理:ActiveSheet.ShapesCivils 4.TextFrame2.TextRange.Characters.Text=ActiveSheet.Cells52,4.Value+I*2技术上我知道如何处理下一张表格,但我不知道在删除某些表格时如何减少这些值。感谢您的向上投票,但让您进行排序。你能用和编辑更新你的问题并添加你的新代码吗?基本上我已经创建了一个新的,它在这里: