|
|
#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 |
|
|
|