Еще раз про Excel
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Еще раз про Excel

Еще раз про Excel

Ответ
Поиск в этой теме
Непрочитано 17.10.2008, 21:48 #1
Еще раз про Excel
mmax
 
Программист широкого профиля.
 
Челябинск
Регистрация: 08.09.2005
Сообщений: 722

Пользовался поиском но ничего не нашел.
Вопрос простой:
Как написать на LISP вот такой код:

Код:
[Выделить все]
Cells(1, 1) = 5
Нашел правописание на LISP для Range

Нужно в определенной последовательности заполнять строчку, например в 20 строке каждую третью колонку, в этой ситуации Range не очень удобно так как номера колонок нужно будет преобразовывать в буквы. Функция преобразования номера колонки в буквы есть, но всеравно хотелось бы сделать функцию заполнения ячеек без функций посредников

Последний раз редактировалось mmax, 17.10.2008 в 23:08.
Просмотров: 12306
 
Непрочитано 17.10.2008, 23:55
#2
T-Yoke

Артиллерист - вертолётчик. Дипломированный инженер-механик. Technologist
 
Регистрация: 29.11.2004
Где-то около Москвы
Сообщений: 16,787
Отправить сообщение для T-Yoke с помощью Skype™


Цитата:
Сообщение от mmax Посмотреть сообщение
Пользовался поиском но ничего не нашел.
Вопрос простой:
Как написать на LISP вот такой код:
Код:
[Выделить все]
Cells(1, 1) = 5
Нашел правописание на LISP для Range
Нужно в определенной последовательности заполнять строчку, например в 20 строке каждую третью колонку, в этой ситуации Range не очень удобно так как номера колонок нужно будет преобразовывать в буквы....
А зачем номера колонок в Excel преобразовывать в буквы-то? Они нумеруются и в цифрах, только режим представления переключить надо.
Миниатюры
Нажмите на изображение для увеличения
Название: EXcel.JPG
Просмотров: 2450
Размер:	94.0 Кб
ID:	11216  
__________________
«Артиллерия не токмо грохот, но и наука!» Пётр I
T-Yoke вне форума  
 
Автор темы   Непрочитано 18.10.2008, 22:52
#3
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


А в Range можно будет тоже цифры писать?
mmax вне форума  
 
Непрочитано 27.10.2008, 16:39
#4
Бриг


 
Регистрация: 17.10.2004
Сообщений: 175


Удобно получать доступ используя номера столбцов и строк следующим образом

Код:
[Выделить все]
Range(Cells(r, c),Cells(r1,c1)).Value = 5
Бриг вне форума  
 
Автор темы   Непрочитано 22.01.2009, 11:42
#5
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


И всетаки я еще раз повторю.
Как правильно написать код на LISP
Который на VBA выглядит примерно так:
Код:
[Выделить все]
Cells(1, 1) = 5
Если говорить прощще, то я никак не могу получить объект типа ячейка по номеру столбца и номеру строки.
Почемуто у меня никак не выходит
mmax вне форума  
 
Непрочитано 22.01.2009, 11:49
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


(vla-settextstring table-object 1 1 "5")
Наверное, как-то так...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 22.01.2009, 13:43
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


mmax,
Про ф-ции перевода чисел в столбцы Excell'a читать
с поста 653 по 691
Код:
[Выделить все]
(defun ColLetter (N			;Integer
		  /
		  Res			;resulting string
		  TMP			;work variable
		 )
;;---------------------------------------------------------------------
;; ColLetter - Given a number, returns a string that is the Excel
;; method of numbering columns.
;; 1="A", 2="B", ... 26="Z", 27="AA", 28 = "AB" ...
  
  (setq Res "")
  (while (> N 0)
    (setq TMP (rem N 26)		;remainder of N divided by 26
	  TMP (if (zerop TMP)		;reset to "Z"
		(setq N	  (1- N)	;move under next order
		      TMP 26		;set to Z offset value
		) ;_ end of setq
		TMP
	      )				;use value as it is
	  Res (strcat			;Add character
		(chr (+ 64 TMP))	;Offset plus 64 ("A" = 65)
		Res
	      )				;existing string
	  N   (/ N 26)			;shift down an order
    ) ;_ end of setq
  ) ;_ end of while
  Res
) ;_ end of defun

;;; Просто пройдись построчно

(setq OEX (vlax-get-or-create-object "Excel.Application"))
(vlax-put-property OEX "UseSystemSeparators" :vlax-false) ;_не использовать системные установки
(vlax-put-property OEX "DecimalSeparator" ".")            ;_разделитель дробной и целой части
(vlax-put-property OEX "ThousandsSeparator" " ")          ;_разделитель тысяччей
(vlax-put-property OEX "Visible" :vlax-true)
(setq OWRB (vlax-get-property OEx 'Workbooks))
(setq AWB (vlax-invoke-method OWRB 'Add))
(setq ASh (vlax-get-property AWB "Worksheets"))
(setq MySheet (vlax-invoke-method Ash 'Add))
(setq cell  (vlax-variant-value (vlax-invoke-method MySheet "Evaluate" "A1")));Ячейка A1
;;;=================================
;;; заносим данные в ячейку A1
;;;=================================
(vlax-put-property cell 'value2 "A1") ;_заносим данные в ячейку A1
(vlax-release-object cell)
;;;=================================
;;; заносим данные в ячейку E2
;;;=================================

(setq Column 5);; 5-й столбец Е
(setq Row 2)   ;; 2-я строка

(setq cell  (vlax-variant-value (vlax-invoke-method MySheet "Evaluate" (strcat (ColLetter Column)(itoa row)))));Ячейка E2
(vlax-put-property cell 'value2 "E1") ;_заносим данные в ячейку A1
(vlax-release-object cell)

;;;=========================================
;;; заносим цифру 2 в  диапазон ячеек B4:C6
;;; Если столбцы считаем цифрами, то получить нужную букву Excell'a
;;; можно с помощью ф-ции ColLetter. См. предыдущий пример
;;;=========================================
(setq cell  (vlax-variant-value (vlax-invoke-method MySheet "Evaluate" "B4:C6")));Ячейки "B4:C6"
(vlax-put-property cell 'value2 "2") ;_заносим данные в ячейку A1
(vlax-release-object cell)

(vlax-release-object MySheet)
(vlax-release-object ASH)
(vlax-release-object AWB)
(vlax-release-object OWRB)
(vlax-release-object OEX)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.01.2009, 13:50
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


С использованием объекта Cell (данные можно заносить только в заданную ячейку)
Код:
[Выделить все]
(setq *AplExcel* (vlax-get-or-create-object "Excel.Application"))
(if (setq *New-Book* (vlax-get-property *AplExcel* "ActiveWorkbook"))
  (setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
        *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
        *Sheet#1*          (vlax-invoke-method *Sheet-Collection* "Add")
  ) ;_ end of setq
  (setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
        *New-Book*         (vlax-invoke-method *Books-Colection* "Add")
        *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
        *Sheet#1*          (vlax-get-property *Sheet-Collection* "Item" 1)
  ) ;_ end of setq
) ;_ end of if
(vla-put-Visible *AplExcel* :vlax-true)
;;; Первый лист Excell'a
(setq *excell-cells* (vlax-get-property *Sheet#1* "Cells"))
;;; Заносим данные в ячейку B1
(setq row 1 col 2)
(vlax-put-property *excell-cells* "Item" row col (vl-princ-to-string 2))
 
(mapcar 'vlax-release-object (list *excell-cells* *Sheet#1* *Sheet-Collection* *New-Book* *Books-Colection*
*AplExcel*))
У меня работают как вариант #7, так и вариант #8
*** Добавил примерчик
Вложения
Тип файла: rar exell.rar (1.46 Мб, 222 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 30.01.2009 в 10:23. Причина: Орфоргафия
VVA вне форума  
 
Непрочитано 22.01.2009, 14:08
#9
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от mmax Посмотреть сообщение
Пользовался поиском но ничего не нашел.
Вопрос простой:
Как написать на LISP вот такой код:

Код:
[Выделить все]
Cells(1, 1) = 5
Нашел правописание на LISP для Range

Нужно в определенной последовательности заполнять строчку, например в 20 строке каждую третью колонку, в этой ситуации Range не очень удобно так как номера колонок нужно будет преобразовывать в буквы. Функция преобразования номера колонки в буквы есть, но всеравно хотелось бы сделать функцию заполнения ячеек без функций посредников
У меня почти то что тебе нужно, только для чтения строки
через заданный шаг
Можешь взятm за основу, я сам не могу сейчас

Код:
[Выделить все]


;;===========================grd.lsp=========================;;
;; get row data

(defun C:GRD  (/
		*error*
		C1
		Cel
		Cels
		Celvalue
		Colnum
		Datalist
		Excelapp
		Filepath
		Findrang
		Findrow
		Lastcell
		R1
		Rownum
		Sht
		Shtnum
		Step
		Wbk)

  (defun *error*  (msg)
    ;; close workbook w/o saving changes 
    (vl-catch-all-apply
      'vlax-invoke-method
      (list Wbk "Close")
      )
    ;; quit Excel
    (vl-catch-all-apply
      'vlax-invoke-method
      (list ExcelApp "Quit")
      )
    ;; clean up of memory 
    (mapcar
      (function
	(lambda	(x)
	  (vl-catch-all-apply
	    (function (lambda ()
			(if (not (vlax-object-released-p x))

			  (vlax-release-object x)
			  )
			)
		      ))))
      (list Cel LastCell Cels FindRow FindRang Sht Wbk ExcelApp)
      )
    (setq Cel nil
	  LastCell nil
	  Cels nil
	  FindRow nil
	  FindRang nil
	  Sht nil
	  Wbk nil
	  ExcelApp nil
	  )
    (gc)
    (gc)
    (princ)
    )
  (setq	FilePath (getfiled "Select Excel file to read data:"
			   (getvar "dwgprefix")
			   "xls"
			   16
			   )
	)
  (initget 6)
  (setq ShtNum (getint "\nEnter the sheet number <1>: "))
  (if (not ShtNum)
    (setq ShtNum 1))
  (initget 6)
  (setq RowNum (getint "\nEnter the row number <20>: "))
  (if (not RowNum)
    (setq RowNum 20))
  (initget 6)
  (setq Step (getint "\nEnter step <2>: "))
  (if (not Step)
    (setq Step 2))

  (setq ExcelApp (vlax-get-or-create-object "Excel.Application"))
  (vla-put-visible ExcelApp :vlax-true)		  ;or :vlax-false for invisible mode
  (setq	Wbk (vl-catch-all-apply
	      'vla-open
	      (list (vlax-get-property ExcelApp "WorkBooks") FilePath)))
  (setq	Sht (vl-catch-all-apply
	      'vlax-get-property
	      (list (vlax-get-property Wbk "Sheets")
		    "Item"
		    ShtNum)))
  (vlax-invoke-method Sht "Activate")

  (setq FindRang (vlax-get-property Sht "UsedRange"))

  (setq	FindRow	(vlax-variant-value
		  (vlax-get-property
		    (vlax-get-property
		      FindRang
		      "Rows")
		    "Item"
		    RowNum)))
  (vlax-invoke-method FindRang "Activate")	  ;optional
  (vlax-invoke-method FindRang "Select")	  ;optional
  (setq LastCell (vlax-get-property FindRow "End" 2))
  ;;Find last cell :
  (setq ColNum (vlax-get-property LastCell "Column"))
  (alert
    (strcat "\nColumn: " (vl-princ-to-string ColNum) "\n"))
  (setq Cels (vlax-get-property FindRow "Cells"))

  (setq	R1   RowNum				  ; defined row number
	C1   1					  ; initial column number
	Step 2)					  ; column step
  (while (<= C1 ColNum)
    (setq Cel (vlax-variant-value
		(vlax-get-property
		  Cels
		  "Item"
		  ;; row number :
		  (vlax-make-variant R1 vlax-vblong)
		  ;; column number :
		  (vlax-make-variant C1 vlax-vblong))))
    (setq CelValue (vlax-variant-value (vlax-get-property Cel "Value2")))
    (setq DataList (cons (vl-princ-to-string CelValue) DataList))
    (setq C1 (+ C1 Step)))

  (print (reverse DataList))
  ;; --> work here with this data after
  (*error* "")
  (princ)
  )
(vl-load-com)
~'J'~
Олег (jr.) вне форума  
 
Непрочитано 23.01.2009, 05:31
#10
TwoZero

Программист
 
Регистрация: 06.03.2008
г.Иркутск
Сообщений: 52
<phrase 1= Отправить сообщение для TwoZero с помощью Skype™


Особо нечитал топики, но вот как делаю я.

Функция для инициализации глобальных переменных
Код:
[Выделить все]
;|=============================================================================
*	Вспомогательная функция начальной инициализации ActiveX
*
*	*** Глобальные переменные ***
*	acad_application - Объект приложения
*	acad_documents - Объект документов
*	active_document - Объект активного документа
*	model_space - Объект пространства модели рисунка
*	paper_space - Объект пространства листа документа
=============================================================================|;
(defun SHPIL-INIT_ACTIVEX ( / )
  (vl-load-com)
  (setq acad_application (vlax-get-acad-object))
  (setq acad_documents (vla-get-documents acad_application))
  (setq active_document (vla-get-activedocument acad_application))
  (setq model_space (vla-get-modelspace active_document))
  (setq paper_space (vla-get-paperspace active_document))
); defun SHPIL-INIT_ACTIVEX
Функция для установки связи с Excel
Код:
[Выделить все]
;|=============================================================================
*	Функция устанавливает соединение с EXCEL 2003
*
*	Установка связи с Excel 2003
*	Аргумент:
*	vis = T - сделать Excel видимым;
*	vis = nil - сделать Excel невидимым.
=============================================================================|;
(defun SHPIL-EXCELConnect (vis / )
  (setq Excel_Application (vlax-get-or-create-object "Excel.Application.12"))
 
  ; Если связь не установлена, то аварийно завершить работу
  (if (null Excel_Application)
    (progn
      (alert "Невозможно запустить Microsoft Excel 2003")
      (exit)
    )
  );end of if
  
  ; Сделать Excel видимым в заисимости от параметра vis
 (if vis (vlax-put-property Excel_Application "Visible" :vlax-true))
);defun SHPIL-EXCELConnect
Функция для разрыва связи с Excel
Код:
[Выделить все]
;|=============================================================================
*	Разрыв связи с Excel и выгрузка из памяти
*
=============================================================================|;
(defun SHPIL-EXCELDisconnect ( / )
  ;(vlax-invoke-method Excel_Application "Quit")
  
  ; Освобождаем объекты, связанные с Excel,
  ; для корректной выгрузки Excel из памяти
  (mapcar
    (function (lambda (x)
      (if (and x (not (vlax-object-released-p x))) (vlax-release-object x))
    )
  )
    (list Excel_CellsSheet Excel_MainSheets Excel_WorkSheets Excel_ActiveWorkBooks Excel_WorkBooks Excel_Application)
  )
 
  ; Освобождаем глобальную переменную Excel_Application
  (setq 
    Excel_Application nil
	Excel_CellsSheet nil
	Excel_MainSheets nil
	Excel_WorkSheets nil
	Excel_ActiveWorkBooks nil
	Excel_WorkBooks nil
  ); end of setq
);defun SHPIL-EXCELDisconnect
Главная функция (присвоить ячейки Excel [1,1] значение 5)
Код:
[Выделить все]
;|=============================================================================
*	Cells(1, 1) = 5
*
*	Локальные переменные:
*	Excel_File - имя файла книги Excel
*	Excel_Cell - VLA-объект ячейки
*	Rang - Вспомогательная переменная для работы с ячейками таблицы EXCEL
*
*	Глобальные переменные:
*	Excel_WorkBooks - VLA-объект семейства Workbooks
*	Excel_ActiveWorkBooks - VLA-объект активной книги
*	Excel_WorkSheets - VLA-объект семейства Sheets
*	Excel_MainSheets - VLA-объект нужного листа книги
*	Excel_CellsSheet - VLA-объект текущего, открытого листа
*	Excel_Application - VLA-объект приложения Excel 2003
*
*	Пример обращения к функции: (SHPIL-main)
*
*	Вложенные функции:
*	PUT-VAL-TO-CELL(ccells x y / tmp) - Запись данных в яйчейку (Объект_текущего_листа координата_x координата_y / вспомогатальная_переменная)
*
=============================================================================|;
(defun SHPIL-main ( / Rang Excel_File Excel_Cell n k)
  (SHPIL-INIT_ACTIVEX)

  (defun PUT-VAL-TO-CELL (ccells x y val / tmp)
    (setq val (vl-string-trim " " val))
    (vlax-put-property
      (setq tmp (vlax-variant-value
        (vlax-get-property
          ccells
          'item
          (vlax-make-variant x vlax-vbinteger)
          (vlax-make-variant y vlax-vbinteger)
        ) ;_ end of vlax-get-property
        ) ;_ end of vlax-variant-value
      ) ;_ end of setq
      "Value2"
      (vlax-make-variant val vlax-vbvariant)
    ) ;_ end of vlax-put-property
    (vlax-release-object tmp)
  );_ end of defun

  ; Установление связи c Excel
  (SHPIL-EXCELConnect 1)
  
  (setq Excel_WorkBooks  (vlax-get-property Excel_Application 'workbooks)
       Excel_ActiveWorkBooks (vlax-invoke-method Excel_WorkBooks 'add 1) ; Создаем новый лист в Excel и делаем его активным
       Excel_WorkSheets (vlax-get-property Excel_ActiveWorkBooks 'worksheets)
       Excel_CellsSheet  (vlax-get-property Excel_ActiveWorkBooks 'activesheet) ;  Текущий, активный лист Excel
  );_ end of setq
  
  ; Создаем VLA-объект ячеек
  (setq Excel_Cell (vlax-get-property Excel_CellsSheet 'cells)) 
 
  ; Cells(1, 1) = 5
  (PUT-VAL-TO-CELL Excel_Cell 1 1 "5")

  ; Разрыв связи c Excel
 (SHPIL-EXCELDisconnect)
) ; defun SHPIL-main
__________________
BASIC _ DELPHI _ C++ _ LISP
TwoZero вне форума  
 
Непрочитано 30.01.2009, 09:48
#11
Beginer

проектировщик ж/б, ОиФ
 
Регистрация: 21.04.2006
Санкт-Петербург
Сообщений: 1,115


Коли тема про Excel, то напишу здесь. Вопрос в следующем: как в Excel сделать подсказку на ячейку? Т.е. кликаешь на ячейку и рядом с ней выплывает подсказка, к примеру, "Введите число от 1 до 10".
Beginer вне форума  
 
Непрочитано 30.01.2009, 09:53
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


По-моему, Shift+F2 (называется примечание).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.01.2009, 10:10
#13
Beginer

проектировщик ж/б, ОиФ
 
Регистрация: 21.04.2006
Санкт-Петербург
Сообщений: 1,115


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
По-моему, Shift+F2 (называется примечание).
Да такое есть. Но еще как-то делается по другому. В предложенном тобой варианте примечание появляется только когда мышка находится в поле активной ячейки. А у меня есть файл в котором сделано так, что на ячейку щелкнул и пояснение горит независимо от положения курсора. К сожалению скрин на работе не прикрепить, вечером скину. А вобще у меня есть подозрение что эта штука была в другой программе как-то сделана и вставлена в Excel.
Beginer вне форума  
 
Непрочитано 30.01.2009, 14:15
#14
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Beginer Посмотреть сообщение
Коли тема про Excel, то напишу здесь. Вопрос в следующем: как в Excel сделать подсказку на ячейку? Т.е. кликаешь на ячейку и рядом с ней выплывает подсказка, к примеру, "Введите число от 1 до 10".
Вставь этот код в модуль того листа в котором
нужно создать примечание, для примера сделал
для ячейки "А1"
В этой ячейке не должно быть создано примечание
код будет ее создавать сам
Если кликнуть по любой другой ячейке или
закрыть файл примечание будет удаляться
Особо не проверял, могут быть нюансы

Код:
[Выделить все]
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim Rng As Range
   If Selection.Count > 1 Then
       Exit Sub
   End If
  On Error Resume Next
  Set Rng = Selection
  On Error GoTo 0
  If Rng.Address = "$A$1" Then 'адрес ячейки измени
    Rng.AddComment
    Rng.Comment.Visible = True
    Rng.Comment.Text Text:="Dude:" & Chr(10) & "How are you?"
    Else
    Range("A1").ClearComments 'адрес ячейки измени
    End If

End Sub

Private Sub Worksheet_Deactivate()
Range("A1").ClearComments
End Sub
~'j'~
Олег (jr.) вне форума  
 
Непрочитано 30.01.2009, 15:10
#15
IVlad


 
Регистрация: 16.01.2009
Москва
Сообщений: 78


Beginer
В 2007 офисе:
Данные - Работа с данными - Проверка данных -
галочку на вкладке сообщение для ввода
и в поле набить текст
IVlad вне форума  
 
Непрочитано 02.02.2009, 12:07
#16
Beginer

проектировщик ж/б, ОиФ
 
Регистрация: 21.04.2006
Санкт-Петербург
Сообщений: 1,115


Цитата:
Сообщение от IVlad Посмотреть сообщение
Beginer
В 2007 офисе:
Данные - Работа с данными - Проверка данных -
галочку на вкладке сообщение для ввода
и в поле набить текст
Спасибо! Именно то, что нужно!
Beginer вне форума  
 
Непрочитано 26.02.2009, 13:33
#17
Beginer

проектировщик ж/б, ОиФ
 
Регистрация: 21.04.2006
Санкт-Петербург
Сообщений: 1,115


Возник ещё один вопрос по Excel.
Есть ли в нём функция, чтобы менять строки(или группы) местами? Т.е. выделяем строку, нпример 5 и 10, нажимаем кнопку и они меняются местами. Полазив по Excelе-вским форумам ответа не получил, есть только отдельная надстройка (платная), кажется PLEX называется. На работе один товарищ утверждает, что такая функция была в стандартном Excel-е еще 10 лет назад.
Beginer вне форума  
 
Непрочитано 26.02.2009, 14:58
#18
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Можно просто свою написать типа:

Код:
[Выделить все]
Option Explicit

Sub ReplaceRows()
Dim rng1 As Range
Dim rng2 As Range
Application.ScreenUpdating = True '!!!
Set rng1 = Application.InputBox("Select row to replace:", , , , , , , 8)
If rng1.Rows.Count > 1 Then
MsgBox "More than 1 row selected! Error..."
Exit Sub
End If
Set rng2 = Application.InputBox("Select row to be replaced with selected one:", , , , , , , 8)
If rng2.Rows.Count > 1 Then
MsgBox "More than 1 row selected! Error..."
Exit Sub
End If
If rng1.Columns.Count <> rng2.Columns.Count Then
MsgBox "Number of columns must be equal! Error..."
Exit Sub
Else
Dim var1, var2
var1 = rng1.Value2
var2 = rng2.Value2
rng1.Value2 = var2
rng2.Value2 = var1
End If

End Sub
~'J'~
Олег (jr.) вне форума  
 
Непрочитано 26.02.2009, 15:14
#19
Beginer

проектировщик ж/б, ОиФ
 
Регистрация: 21.04.2006
Санкт-Петербург
Сообщений: 1,115


Спасибо! Работает! Только вот хотелось бы всё-таки узнать есть ли такая функция в голом, без кодов и надстроек, Excel ?
P.S. Поспорили просто)))
Beginer вне форума  
 
Непрочитано 26.02.2009, 16:34
#20
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


В редакторе в любом Sub напечатай:
WorksheetFunction. (с точкой)
откроется окно Intellisence - там все
функции которые у тебя в Экселе
Ищи там - я не нашел

~'J'~
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Еще раз про Excel

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В сотый раз вопрос про анкеровку арматуры NEWone Железобетонные конструкции 87 26.10.2014 11:39
сборка больших схем в SCAD X-DeViL SCAD 165 05.12.2012 17:13
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Еще раз о забежных ступенях. Огурец отзовитесь! Xolod Прочее. Архитектура и строительство 4 26.11.2005 09:37