2017-04-04 15 views
1

目標:我正在嘗試向我的Excel 2016 VSTO插件添加一項功能。該功能將從活動工作表中獲取1列,並根據字符串長度更改背景顏色進行迭代。如何從單元格中獲取字符數

問題:我無法從單元格獲取字符串長度。我想不出正確的語法,我現在有var count = row.Item[1].Value2.Text.Length;

代碼:這裏是我

public void CharacterLengthCheck(int length = 24, int Column = 3) 
    { 
     Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet; 
     var RowCount = sheet.UsedRange.Rows.Count; 
     Range column = sheet.Range[sheet.Cells[1, Column], sheet.Cells[RowCount, Column]]; 
     foreach (Range row in column) 
     { 
      var count = row.Item[1].Value2.Text.Length; 
      if (count > length) 
      { 
       row.Item[1].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); 
      } 
      else 
      { 
       row.Item[1].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green); 
      } 
     } 
    } 
+0

'我遇到了麻煩字符串長度從細胞......你說什麼麻煩......? – ManishChristian

+1

構建條件格式會不會更容易,或者您希望文本更改時顏色是否爲靜態? – Jeeped

+0

@Jeeped我可以用VSTO創建條件格式嗎?此外,這是爲了編輯CSV文件,所以我不能保存任何文件。 – TheColonel26

回答

0

我覺得你的問題是在這裏:

row.Item[1].Value2.Text.Length

長度功能是Len(x),所以請嘗試Len(row.Item[1].Value2.Text)

+0

Len()在什麼名稱空間? – TheColonel26

+0

我不相信可以在VSTO中完成。 – TheColonel26

+0

Woops我認爲這是針對Excel-VBA,而不是VSTO。抱歉! –

0

感謝@Jeeped關於使用條件格式的建議。然而,我原來的問題的答案是。

變化

var count = row.Item[1].Value2.Text.Length;

string text = (row.Item[1].Value).ToString(); 
var count = text.length; 

我相信這是因爲價值是動態的,需要顯式轉換爲字符串

相關問題