![]() |
#1 |
Модератор
|
Excel. Узнать по именованной ячейке на каком она листе?
Excel. Узнать по именованной ячейке на каком она листе?
в VBA есть X++: MsgBox Range("test").Worksheet.Name ![]() |
|
![]() |
#2 |
Moderator
|
Объект Application перед Range добавьте - мысленно или на бумажке - и проанализируйте, как можно получить
![]() Только надо при этом, чтобы была активна та Workbook, в которой определено это имя "test". PHP код:
и потом выкусывать имя листа из полной ссылки: =Sheet1!$B$2 |
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
MCTS
|
Цитата:
в VBA есть
X++: MsgBox Range("test").Worksheet.Name Как это получить из X++ ? X++: COM ws; ; ws = range.Worksheet(); info(ws.Name()); |
|
|
За это сообщение автора поблагодарили: Poleax (1). |
![]() |
#5 |
Moderator
|
Цитата:
Но, как я понимаю, он хочет на вход своей будущей функции подать строку "test", а на выходе получить другую строку - имя листа. И пока ему непонятно как создать этот range, не зная имени листа. Ответ - создать от Application, который явно не указан в коде VBA, но который незримо присутствует: range = Application.Range("test"). |
|
![]() |
#6 |
Участник
|
пример тут \Classes\ComExcelDocument_RU\findRange
|
|
![]() |
#7 |
Moderator
|
|
|
![]() |
#8 |
MCTS
|
Цитата:
Это в том случае, если у него уже имеется этот range.
X++: COM ws; COM cells; COM sheets; int cnt; COM findRange; sheets = app.sheets(); cnt = sheets.Count(); for (i = 1; i <= cnt; i++) { sheet = sheets.Item(i); cells = sheet.Cells(); findRange = cells.Find("ttt"); if (findRange) { ws = findRange.Worksheet(); info(ws.Name()); } |
|
![]() |
#9 |
Модератор
|
![]() |
|
![]() |
#10 |
Moderator
|
Да не нужно листы перебирать, я ж всё вроде написал...
Получите Application как точку опору и мир сам перевернется ![]() X++: static void Job120(Args _args) { ComExcelDocument_RU doc = new ComExcelDocument_RU(); COM xlApp; COM wbook; COM activeSheet; COM wkss; COM range; str sheetName(COM _excel, str _namedRange) // ОНО! { COM comTemp; ; comTemp = _excel.Range(_namedRange); comTemp = comTemp.Worksheet(); return comTemp.Name(); } ; // это всё - подготовка тестовых данных // --------------------------------------------------------- doc.NewFile(); wbook = doc.getComDocument(); wkss = wbook.Worksheets(); xlApp = wbook.Parent(); activeSheet = xlApp.ActiveSheet(); range = activeSheet.Range('B2'); range.Name('test'); range.Select(); activeSheet = wkss.Add(); activeSheet.Select(); // специально ушли на другой лист // --------------------------------------------------------- // а теперь собственно вызов функции box::info(sheetName(xlApp, 'test')); } |
|
![]() |
#11 |
MCTS
|
понятно, я думал, само значение ищется
![]() |
|
Теги |
excel |
|
|