मैं अपने ws वेरिएबल को पहली वर्कशीट में सेट कर रहा हूं लेकिन मेरा कोड सक्रिय शीट पर चलता है।

यह कोड शीट 2 पर एक बटन से चलता है और मैं Sheets(1).Select का उपयोग कर रहा हूं क्योंकि पहली वर्कशीट का नाम भिन्न हो सकता है।

मुझे क्या बदलने की ज़रूरत है ताकि मेरा कोड शीट्स(1) पर चले?

Function Test()

Dim ws As Worksheet
Dim lColumn As Long
Dim lRow As Long
Dim myRange As Range
Dim cell As Range

Set ws = Sheets(1)

    With ws
        lColumn = ws.UsedRange.Columns.Count
        lRow = Cells(Rows.Count, 2).End(xlUp).Row

        colName = Split(Worksheets(1).Cells(1, lColumn).Address, "$")(1)

        Range("A1: " & colName & "1").Font.Bold = True

        Set myRange = Range("A1: " & colName & "1")

        For Each cell In myRange
            cell.Interior.Pattern = xlSolid
            cell.Interior.PatternColorIndex = xlAutomatic
            cell.Interior.ThemeColor = xlThemeColorDark1
            cell.Interior.TintAndShade = -0.249977111117893
            cell.Interior.PatternTintAndShade = 0
        Next

    End with

End Function
0
MitchMahoney 5 अक्टूबर 2018, 21:29

1 उत्तर

सबसे बढ़िया उत्तर

जब आप With कथनों का उपयोग करते हैं, तब भी आपको गुणों के सामने . उपसर्ग करने की आवश्यकता होती है, ताकि सदस्य कॉल With ब्लॉक चर के विरुद्ध किया जा सके।

मैंने lColumn = ws.UsedRange.Columns.Count को lColumn = .UsedRange.Columns.Count में बदल दिया

.Range("A1: " & colName & "1").Font.Bold = True
Set myRange = .Range("A1: " & colName & "1")

. का उपयोग न करने से VBA को लगता है कि आप ActiveSheet को संदर्भित कर रहे हैं।

3
Mathieu Guindon 5 अक्टूबर 2018, 18:58