Ich stoße auf diesen Fehler Wenn ich "Let SRange =" C "...." stattdessen verwenden, funktioniert es, aber ich will nicht um das Ende der Spalte wie "NV" anzugeben. Ich würde raten, die Spalte in FinalCol zu verwenden. Es könnte einfacher sein, sich den Code anzusehen. Ich habe einige Änderungen .. aber jetzt ist es zu fragen: „Objektvariable oder With-Blockvariable nicht gesetzt“Excel Vba: Methode 'Bereich' des Objekts '_Global' fehlgeschlagen Fehler in Excel
Option Explicit
Sub Range_End()
Dim X As Variant, Count, FinalCol, SRange, XRange As Range
Sheets("Formatted").Select
X = InputBox("enter row number")
Count = 1
Do While Cells(4, Count) <> Empty
Count = Count + 1
Loop
FinalCol = Count - 1
' Let SRange = "C" & X & ":" & "NV" & X
SRange = Range(Cells(X, 3), Cells(X, FinalCol)).Address
Application.ScreenUpdating = False
For Each XRange In Range(SRange)
If XRange.Value = "" Then
XRange.EntireColumn.Hidden = True
Else
XRange.EntireColumn.Hidden = False
End If
Next XRange
Application.ScreenUpdating = True
End Sub
Try 'Srange = Range (Cells (X, 3), Zellen (X, FinalCol)). Address' –
Auch sollten Sie immer Ihre Variablen deklarieren. Fügen Sie 'Option Explicit' ganz oben hinzu (sogar über' Sub Range_End() ', dann fügen Sie die Variablen hinzu, dh' Dim X als Long', 'Dim SRange als String' (wie Sie es haben, suchen Sie nach einem string, aber vielleicht schauen Sie sich das an, indem Sie einen 'Range' machen, etc ... – BruceWayne
Oder besser SRange als' Range' deklarieren, dann - 'Set SRange = Bereich (Zellen (X, 3), Zellen (X, FinalCol)) 'und dann Schleife über' SRange' direkt. Es gibt keine Notwendigkeit, einen Bereich zu seiner Adresse zu konvertieren und dann diese Adresse zu verwenden, um wieder in den gleichen Bereich zu konvertieren. –