Попытка связать выпадающие меню с операторами if в Excel с кодом C# - PullRequest
0 голосов
/ 28 января 2020

Я пытался использовать Validation.Add, и если операторы для раскрывающегося списка в ячейке A2 должны быть динамическими c, и добавить определенные параметры массива, зависящие от ячейки A1.

Я также не могу найти для него нигде кода, кроме, возможно, ссылки на Office2010, но я не думаю, что он будет работать с версией 2019.

       x.Range["A2"].Validation.Delete();
       x.Range["A2"].Validation.Add(Excel.XlDVType.xlValidateList, Type.Missing, 
       Excel.XlFormatConditionOperator.xlBetween, 
       "=if(A1="+ DO.quote + "XDDoor" + DO.quote+ "," + DO.quote + "Pass" + 
       DO.quote+ "," + DO.quote + string.Join(",", 
       arrayList.ToArray()) + DO.quote+ ")"
        );

1 Ответ

0 голосов
/ 28 января 2020

Мне пришлось поместить формулу в строку, прежде чем добавить ее в параметр Add. после этого я собираюсь динамически изменять каждый раздел строки с именами параметров.

            for (int i = 1; i <= StandardDoor.Count; i++)
            {
                x.Range["E"+i].Value = StandardDoor[i-1];
            }
            for (int i = 1; i <= XDDoor.Count; i++)
            {
                x.Range["F" + i].Value = XDDoor[i - 1];
            }
            for (int i = 1; i <= SR2Door.Count; i++)
            {
                x.Range["G" + i].Value = SR2Door[i - 1];
            }
            for (int i = 1; i <= SR3Door.Count; i++)
            {
                x.Range["H" + i].Value = SR3Door[i - 1];
            }

string xform = "=IF(B2=" + DO.quote + "StandardDoor" + DO.quote + "," 
                + "E1:E4" + ",IF(B2="+ DO.quote + "XDDoor" + DO.quote +"," + "F1: F4" +
                ",IF(B2=" + DO.quote + "SR2Door" + DO.quote + "," 
                + "G1: G3" + ",IF(B2=" + DO.quote + "SR3Door" + DO.quote + "," 
                + "H1: H3" + "," + "I1: I3" + "))))";
x.Range["B4"].Validation.Delete();
x.Range["B4"].Validation.Add(Excel.XlDVType.xlValidateList, 
                 Excel.XlDVAlertStyle.xlValidAlertStop, 
                 Excel.XlFormatConditionOperator.xlBetween, 
                 xform, Type.Missing);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...