我在定义单元格的变量范围时遇到问题。有问题的线由每个末端的两颗星表示。就在它下面有一些评论,我也尝试过没有成功。公共Sub Dreiecke_gleichen()工作正常,我只包括它,让你可以看到什么是“sheetvektor”。定义单元格的变量范围
最后,关于如何改进代码s.t.,有经验的程序员在阅读代码时不会晕倒的任何建议? =)
巨大预先感谢您,
Option Explicit
Private sheetvektor() As String
Public Sub Dreiecke_gleichen()
Dim ws As Worksheet
Dim Blatt1, Blatt2 As String
Dim Anfangsjahr1, Anfangsjahr2 As Integer
Dim reporting_Jahr1, reporting_Jahr2 As String
Dim i As Integer
i = 1
For Each ws In Worksheets
If ws.Name Like "RVA_H*" Then
ReDim Preserve sheetvektor(i)
sheetvektor(i) = ws.Name
If IsEmpty(Blatt1) = False Then
Blatt2 = ws.Name
Anfangsjahr2 = ws.Range("A3").Value
reporting_Jahr2 = ws.Range("A1").Value
i = i + 1
Else
Blatt1 = ws.Name
Anfangsjahr1 = ws.Cells(3, 1).Value
reporting_Jahr1 = ws.Cells(1, 1).Value
i = i + 1
GoTo X
End If
Else: GoTo X
End If
If reporting_Jahr1 <> reporting_Jahr2 Then
MsgBox "Dreiecke von unterschiedlichen Jahren"
Exit Sub
ElseIf reporting_Jahr1 = reporting_Jahr2 Then
If Anfangsjahr1 < Anfangsjahr2 Then
Worksheets(Blatt2).Rows("3:" & 3 + Anfangsjahr2 - Anfangsjahr1 - 1).Insert
ElseIf Anfangsjahr1 > Anfangsjahr2 Then
Worksheets(Blatt1).Rows("3:" & 3 + Anfangsjahr1 - Anfangsjahr2 - 1).Insert
ElseIf Anfangsjahr1 = Anfangsjahr2 Then GoTo X
End If
End If
X: Next ws
End Sub
Public Sub Dreiecksummieren()
Dim j, n As Integer
Dim lastcol, lastrow As Integer
Dim grosematrix() As Variant
Dim myrange As String
If IsEmpty(sheetvektor()) = True Then
MsgBox "Solche Blätter existieren nicht"
Else
j = 3
Do While IsEmpty(Worksheets(sheetvektor(1)).Cells(j, 1)) = True
j = j + 1
Loop
lastcol = Worksheets(sheetvektor(1)).Cells(j, 1).End(xlToRight).Column
lastrow = Worksheets(sheetvektor(1)).Cells(j, 1).End(xlDown).Row
End If
For n = 1 To UBound(sheetvektor)
** grosematrix(n) = Worksheets(sheetvektor(n)).Range(Cells(j, 1), Cells(lastrow, lastcol)).Value **
' grosematrix(n) = Worksheets(sheetvektor(n)).Range("A" & j: Cells(lastrow, lastcol)).Value
' grosematrix(n) = Worksheets(sheetvektor(n)).Range(Cells(j, 1).Address(), Cells(lastrow, lastcol).Address()).Value
' Let myrange = "Cells(j, 1), Cells(lastrow, lastcol)"
' Let grosematrix(n) = Worksheets(sheetvektor(n)).Range(myrange).Value
Next n
Debug.Print (WorksheetFunction.Sum(grosematrix))
End Sub
我整合了你的建议,但不幸的是,它仍然被卡住在同一行“grosematrix = Worksheets ...”中,通过说“Applica定义或对象定义的错误“。 =( – Lola
此外,我可以问,如果通过删除括号,我仍然可以存储变量的向量,即grosematrix(1); grosematrix(2)等? – Lola
尝试分配一些简单的东西'grosematrix = sheet1.range(“b2:c5”)',你至少会看到错误来自等号的左边还是右边。 –