एक्सेल कॉन्स्टेंट - गतिशील रूप से संदर्भ कैसे दें?


1

मैं एक दोस्त के लिए एक जटिल स्प्रेडशीट विकसित कर रहा हूं; मेरा पहला इन-डीप एक्सेल। Excel 2003 में कार्य करना। मेरे पास जो समस्या है वह xl स्थिरांक के साथ कार्यशील है, उदाहरण के लिए xlPaper। समस्या तब आती है जब निरंतर के साथ काम करने की कोशिश की जाती है, यह ऐसा है जैसे "xlWhatever" संदर्भ पास होने पर मान के साथ काम नहीं किया जा सकता।

समस्या के साथ कोड:

     Dim myRange As String, LM As Integer, RM As Integer, TM As Integer, BM As Integer, Papersizing As String, Orient As String, Quality As Integer
            On Error GoTo Errorcatch
    TM = ws.Range("f2").Value
     LM = ws.Range("f3").Value
     BM = ws.Range("f4").Value
     RM = ws.Range("f5").Value
      Papersizing = "xlPaper" & ws.Range("d2").Value
      Orient = "xl" & ws.Range("d5").Value
      MsgBox Papersizing
     Quality = ws.Range("d9").Value
    With ActiveSheet.PageSetup
    .PrintTitleRows = ""
    .PrintTitleColumns = ""
End With


    With ActiveSheet.PageSetup
    MsgBox .Papersize
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.CentimetersToPoints(LM)
        .RightMargin = Application.CentimetersToPoints(RM)
        .TopMargin = Application.CentimetersToPoints(TM)
        .BottomMargin = Application.CentimetersToPoints(BM)
        .HeaderMargin = Application.CentimetersToPoints(0)
        .FooterMargin = Application.CentimetersToPoints(0)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = Orient
        .Draft = False
        .Papersize = Papersizing
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
    End With

तो कागजात वहाँ "xlPaperA4", ओरिएंट = "xlPortrait" होने के नाते समाप्त होता है। एक्सेल के साथ काम करते समय त्रुटि एक्सेल थूकता है "पेजसेटअप क्लास की पेपरसाइज संपत्ति को सेट करने में असमर्थ" और ओरिएंटेशन के समान।

फिर भी अगर मैं कड़े मूल्यों को पास करता हूँ जैसे .Paperize = 9 यह काम करता है विशेष रूप से गतिशील नहीं है। मुझे माफ़ कर दो ... मैं PHP का आदी हूँ।

तो मैं यहाँ क्या करूँ? स्थिरांक के नाम के आधार पर स्थिरांक को फिर से संदर्भित करने की कोई विधि है?

जवाबों:


1

xlPaperA4 और xlPortrait स्थिर हैं और स्ट्रिंग्स के रूप में पारित नहीं किया जा सकता है। आप जिन संपत्तियों को सेट करने की कोशिश कर रहे हैं, वे एक संख्या की उम्मीद करते हैं। आप जो करने की कोशिश कर रहे हैं वह यहां अंतिम पंक्ति की तरह है:

Const xlSomething = 123
Choice = "Something"
Value = xlSomething    ' Value = 123
Value = "xl" & Choice  ' Value = "xlSomething", Error: Not a number!

मुझे यकीन नहीं है कि वीबीए कितना शक्तिशाली है, लेकिन आपको सेलेक्ट / केस स्टेटमेंट का सहारा लेना पड़ सकता है।

Select ws.Range("d2").Value
    Case "A4": Papersizing = xlPaperSizeA4
    Case "A3": Papersizing = xlPaperSizeA3
    Case Else
        Papersizing = 0
        MsgBox "Bad paper size."
End Select

बहुत अच्छे धन्यवाद। मैं अभी तक VBA में सेलेक्ट केस करने की क्षमता में नहीं आया था ... लेकिन यह एकमात्र उत्तर होना चाहिए। चीयर्स!
Onyx

निश्चित रूप से अन्य उत्तर हैं, लेकिन लागू करने के लिए बहुत अधिक काम करना होगा। मुझे खुशी है कि यह आपको मिल रहा है!
Hand-E-Food

2

जबकि आप शायद एक वर्कअराउंड बना सकते हैं (डेव पीटरसन के पियर्सन के पोस्ट में लिंक देखें) http://www.pcreview.co.uk/forums/convert-string-representation-excel-constant-actual-value-t3148528.html ) स्प्रेडशीट में प्रत्यक्ष मानों का उपयोग क्यों नहीं किया जाता है, या डेटा वैलिडेशन के साथ पोर्ट्रेट / लैंडस्केप आदि का उपयोग करने दें, लेकिन फिर सही निरंतर मानों 1/2 को वापस करने के लिए सूत्र का उपयोग करें?

निरंतर मान F2 दबाकर और उन्हें लाइब्रेरी में देखकर प्राप्त करना आसान है

paper it


उत्तर के लिए धन्यवाद। इसके लिए वर्कअराउंड ठीक है जहां अभिविन्यास का संबंध है। लेकिन एक बार जब आप कागज के आकार के बारे में बात करते हैं ... ouch! msdn.microsoft.com/en-us/library/ff839964.aspx - कागज़ के आकार मैं Cpearson साइट पर संदर्भित स्थिरांक नहीं पा सका, हालांकि ... शायद पुन: डिज़ाइन किया गया?
Onyx

आप F2 लाइब्रेरी में आसानी से "एक्सेल का सदस्य। XlPaperSize का सदस्य" [ऊपर जोड़ा गया स्क्रीनशॉट] पा सकते हैं। मैं कागज़ात और स्थिर मूल्यों की एक डेटा सत्यापन तालिका सेटअप करूँगा, उपयोगकर्ताओं को कागज़ात चुनने दें और फिर कोड में निरंतर मान फ़ीड करें।
brettdj
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.