【发布时间】:2020-10-09 23:14:13
【问题描述】:
我有一个这样的工作表:
现在,我已经实现了生成不同类别的工作表(即 Internet、桌面出版、商业工作表),因此我需要将这些产品及其名称和价格插入到第 4 行的类别工作表中,如下所示:
这是我的 VBA 代码:
Sub task()
Dim Start As Integer
Start = 3
While Cells(Start + 1, 2).Value <> ""
Start = Start + 1
Wend
Dim category_range As Range
Set category_range = Range("B4:B" & Start)
Dim List As Object
Set List = CreateObject("Scripting.Dictionary")
Dim Rng As Range
For Each Rng In category_range
If Not List.Exists(Rng.Value) Then
List.Add Rng.Value, Nothing
End If
Next Rng
Dim arr(), k As Variant
ReDim arr(List.Count)
Dim wdnmd As Integer
wdnmd = 0
For Each k In List.Keys
arr(wdnmd) = k
wdnmd = wdnmd + 1
Next k
Dim category_index As Integer
For category_index = 0 To List.Count - 1
Sheets.Add(After:=Sheets("Data")).Name = arr(category_index)
With Sheets(arr(category_index))
.Columns("A").ColumnWidth = Sheets("Data").Columns("A").ColumnWidth
.Range("A3").Value = "Product"
.Range("B3").Value = "Price"
.Range("A1").Value = "Products in the " & arr(category_index) & " Category"
End With
Next category_index
Dim target As Range
Set target = Range("A4:C" & Start)
Dim entry As Range, i As Integer
Dim target_worksheet As String
For i = 4 To Start
target_worksheet = Cells(i, 2).Value
Next i
End Sub
通过我的代码的最后一行,我们将确定产品属于哪个类别,即我们知道哪个工作表包含该产品。对我来说困难的是如何使代码始终从这三个工作表的4th 行开始插入新条目?我认为VBA应该有一个内置函数来完成这个操作。我试过rows.insert和copypaster的方法很疑惑,但是不知道这部分怎么实现。
【问题讨论】:
-
使用 cuss 词作为数组变量是不合适的。
-
请在 Stack Overflow 上使用适合工作场所的语言,而不是可能冒犯某些人或群体的语言。请参阅:Are expletives (cursing, swear words or vulgar language) allowed on SE sites?。请记住,使用攻击性语言往往会导致人们对您的帖子反应不佳(即他们可能会投反对票)。此外,您真的希望未来的雇主看到您在本应是专业的情况下使用这种语言吗?