আমি কীভাবে স্ট্রাইলে ডাবল উদ্ধৃতি লিখব?


116

আমি ভিবিএর মাধ্যমে একটি ঘরে একটি if স্টেটমেন্ট সন্নিবেশ করতে চাই যার মধ্যে ডাবল কোটস অন্তর্ভুক্ত রয়েছে।

আমার কোডটি এখানে:

Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"

ডাবল কোটের কারণে আমার স্ট্রিং inোকানোর ক্ষেত্রে সমস্যা হচ্ছে। আমি কীভাবে ডাবল উদ্ধৃতি হ্যান্ডেল করব?


সরাসরি উত্তর নয়, তবে আপনি কি সেই স্ট্রিং সম্পর্কে নিশ্চিত? এটি একটি বৃত্তাকার রেফারেন্স এবং সমান চিহ্ন দিয়ে শুরু হয় না।
জিমিপেনা

@ জিমিপেনা আমি মনে করি এটি সম্ভবত উদাহরণের কোড। আমি নির্বিশেষে একটি সম্পাদনা জমা দিচ্ছি
ফারফ্রুমুনিক

উত্তর:


182

আমি খুঁজে পেলাম সবচেয়ে সহজ উপায়টি হ'ল একটি উদ্ধৃতি পরিচালনা করতে উদ্ধৃতিগুলিকে দ্বিগুণ করা।

Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0,"""",Sheet1!A1)" 

কিছু লোক সিএইচআর (34) * ব্যবহার করতে পছন্দ করে:

Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0," & CHR(34) & CHR(34) & ",Sheet1!A1)" 

* দ্রষ্টব্য: CHAR () একটি এক্সেল সেল সূত্র হিসাবে ব্যবহৃত হয়, উদাহরণস্বরূপ একটি ঘরে "= CHAR (34)" লেখা, কিন্তু ভিবিএ কোডের জন্য আপনি CHR () ফাংশনটি ব্যবহার করেন।


28
আমি একটি গ্লোবাল ভেরিয়েবল তৈরি করতে পছন্দ করি: পাবলিক কনস্ট ভিবিডুবলকোট যেমন স্ট্রিং = "" "" "স্ট্রিং হিসাবে পাবলিক কনস্ট ভিবিসিংকলকোট =" "" 1 টি একক উদ্ধৃতি (') উপস্থাপন করে এবং এর মতো ব্যবহার করে: শেল " এক্সপ্লোরার এক্সেক্স "& vbDoubleQuote & sPath & vbDoubleQuote, vb সাধারণ ফোকাস
gicalle

@ ইঞ্জিলের উত্তরটি সত্যিই ঝরঝরে, এটি একটি সংজ্ঞা যেখানে ডকুমেন্ট করা যায় সেখানে '
কয়টি

1
আমি আমার সমস্ত ভিবিএ প্রকল্পগুলিতে প্রচুর গ্লোবাল সংজ্ঞায়িত ব্যবহার করি (যখন আমার ভিবিএ ব্যতীত অন্য কিছু ব্যবহারের বিকল্প নেই !!) যা গাড়ীর রিটার্ন, ডাবল কোট ইত্যাদির মতো সমস্ত সাধারণ জিনিস সংজ্ঞায়িত করে
রোল

11

আরেকটি কাজের চারপাশ হ'ল অস্থায়ী বিকল্প চরিত্রের সাথে একটি স্ট্রিং তৈরি করা। তারপরে আপনি প্রতিটি অস্থায়ী চরিত্রটিকে ডাবল উদ্ধৃতিতে পরিবর্তন করতে REPLACE ব্যবহার করতে পারেন। আমি টিল্ড অস্থায়ী বিকল্প চরিত্র হিসাবে ব্যবহার করি।

আমি যে প্রকল্পে কাজ করছি তার উদাহরণ এখানে। কোষটি দুর্ঘটনাক্রমে পদক্ষেপ নেওয়ার পরে / যখন খুব জটিল সূত্রটি মেরামত করতে এটি সামান্য ইউটিলিটি রুটিন। কোনও ঘরে প্রবেশ করা এটি একটি কঠিন সূত্র, তবে এই সামান্য উপযোগটি তাৎক্ষণিকভাবে ঠিক করে দেয়।

Sub RepairFormula()
Dim FormulaString As String

FormulaString = "=MID(CELL(~filename~,$A$1),FIND(~[~,CELL(~filename~,$A$1))+1,FIND(~]~, CELL(~filename~,$A$1))-FIND(~[~,CELL(~filename~,$A$1))-1)"
FormulaString = Replace(FormulaString, Chr(126), Chr(34)) 'this replaces every instance of the tilde with a double quote.
Range("WorkbookFileName").Formula = FormulaString

এটি সত্যিই কেবল একটি সাধারণ প্রোগ্রামিং কৌশল, তবে এটি আপনার ভিবিএ কোডের সূত্রে প্রবেশ করা বেশ সহজ করে তোলে।


8

ডাবল উদ্ধৃতিগুলির মধ্যে থাকা সমস্ত ডাবল উদ্ধৃতি যা স্ট্রিংটি বাড়িয়েছে দ্বিগুণ করতে হবে। উদাহরণস্বরূপ আমার কাছে জেসন ফাইলের একটি স্ট্রিং ছিল: "বিতরণ": "স্ট্যান্ডার্ড", ভিবিএ সম্পাদকগুলিতে আমি এটিকে "" "সরবরাহ" "": "" স্ট্যান্ডার্ড "", "তে পরিবর্তন করেছি এবং অরিথিগ সঠিকভাবে কাজ করে। যদি আপনাকে অনেকগুলি অনুরূপ স্ট্রিং সন্নিবেশ করতে হয় তবে আমার প্রস্তাবটি প্রথমে এগুলি সমস্ত "" এর মধ্যে sertোকান, তারপরে ভিবিএ সম্পাদক দ্বারা "ভিতরে" "" প্রতিস্থাপন করুন you এই ত্রুটি


5

আমি ট্যাবএসএফ এর উত্তর পছন্দ করি। আপনার উত্তর একই বাস্তবায়ন। নীচে আমার পদ্ধতির নীচে

Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!A1=0," & CHR(34) & CHR(34) & ",Sheet1!A1)"

4

আমি একটি ছোট্ট রুটিন লিখেছি যা একটি ঘর থেকে ক্লিপবোর্ডে সূত্রটি অনুলিপি করে যা ভিজ্যুয়াল বেসিক সম্পাদকটিতে সহজেই আটকানো যায়।

    Public Sub CopyExcelFormulaInVBAFormat()
        Dim strFormula As String
        Dim objDataObj As Object

        '\Check that single cell is selected!
       If Selection.Cells.Count > 1 Then
            MsgBox "Select single cell only!", vbCritical
            Exit Sub
        End If

        'Check if we are not on a blank cell!
       If Len(ActiveCell.Formula) = 0 Then
            MsgBox "No Formula To Copy!", vbCritical
            Exit Sub
        End If

        'Add quotes as required in VBE
       strFormula = Chr(34) & Replace(ActiveCell.Formula, Chr(34), Chr(34) & Chr(34)) & Chr(34)

        'This is ClsID of MSFORMS Data Object
       Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        objDataObj.SetText strFormula, 1
        objDataObj.PutInClipboard
        MsgBox "VBA Format formula copied to Clipboard!", vbInformation

        Set objDataObj = Nothing

    End Sub

এটি মূলত Chandoo.org ফোরামের ভল্ট বিভাগে পোস্ট করা হয়েছে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.