Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу При клике по ячейке, скопировать её содержимое в другую книгу
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Nasek Nasek вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.02.2015
По умолчанию 26.02.2015, 12:02

Здравствуйте, pashulka!
В продолжение предыдущей задачи появилась новая проблема. Мне необходимо при нажатии кнопки "Да" на пользовательской форме предварительно сдвинуть весь массив B3:F... на строку вниз, а на освободившуюся строку B3:F3 скопировать данные из пользовательской формы или из ячеек, содержимое которых копировалось в пользовательскую форму. После чего на исходном листе очистить содержимое ячеек F, I, J в строке, по ячейке "Н" которой был произведен клик.
При нажатии кнопки "Нет", естественно, ничего не делается, просто пользовательская форма должна исчезнуть.
Я написал часть кода (ересь, конечно). Надо бы, вероятно, объединить две эти процедуры, чтобы использовать TextBox, но не знаю как это сделать
Помогите, пожалуйста.


If Not Intersect([H7:H1000], Target) Is Nothing Then
If LCase(Trim(Target)) = "сделано" Then
Dim iRow&: iRow = Target.Row
With UserForm2
.TextBox1 = Cells(iRow, "A")
.TextBox2 = Cells(iRow, "B")
.TextBox3 = Cells(iRow, "F")
.TextBox4 = Cells(iRow, "I")
.TextBox5 = Cells(iRow, "J")
.Show
End With
With Worksheets("Архив")
.Cells(.Cells(Rows.Count, "B").End(xlUp).Row + 1, "A") = Target
.Cells(.Cells(Rows.Count, "C").End(xlUp).Row + 1, "B") = Target
.Cells(.Cells(Rows.Count, "D").End(xlUp).Row + 1, "F") = Target
.Cells(.Cells(Rows.Count, "E").End(xlUp).Row + 1, "I") = Target
.Cells(.Cells(Rows.Count, "F").End(xlUp).Row + 1, "J") = Target
End With
End If
End If
Ответить с цитированием
  (#17 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 26.02.2015, 20:40

Можно сделать, например, так:

В модуле листа "Архив"

VB Код:
Public iRow&

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    If Not Intersect([H7:H1000], Target) Is Nothing Then
       If LCase(Trim(Target)) = "сделано" Then 'If Target = "сделано" Then
         Cancel = True: iRow = Target.Row
          With UserForm2
               .TextBox1 = Cells(iRow, "A")
               .TextBox2 = Cells(iRow, "B")
               .TextBox3 = Cells(iRow, "F")
               .TextBox4 = Cells(iRow, "I")
               .TextBox5 = Cells(iRow, "J")
               .Show
          End With
       End If
    End If
End Sub

В модуле UserForm2

VB Код:
Private Sub CommandButton1_Click() 'ДА
   With Worksheets("Архив")
         .Rows(3).Insert
         .Cells(3, "B") = TextBox1
         .Cells(3, "C") = TextBox2
         .Cells(3, "D") = TextBox3
         .Cells(3, "E") = TextBox4
         .Cells(3, "F") = TextBox5
         .Cells(.iRow + 1, "F").Clear
         .Cells(.iRow + 1, "I").Clear
         .Cells(.iRow + 1, "J").Clear
    End With
End Sub

Private Sub CommandButton2_Click() 'НЕТ
   Unload Me
End Sub
Ответить с цитированием
  (#18 (permalink)) Старый
Nasek Nasek вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.02.2015
По умолчанию 27.02.2015, 19:06

Здравствуйте, pashulka!
Спасибо Вам за помощь, все работает безукоризненно за исключением процедуры очистки ячеек F, I, J на исходном листе, откуда брались данные для пользовательской формы. При запуске программы возникает ошибка. Возможно, виноват я сам. Первый код я поместил не в модуле листа "Архив", а в модуле листа "БД" (База данных), на котором и вызывается пользовательская форма. Иначе ее никак не вызвать.
Ответить с цитированием
  (#19 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 27.02.2015, 21:23

VB Код:
Private Sub CommandButton1_Click() 'ДА
   With Worksheets("Архив")
         .Rows(3).Insert
         .Cells(3, "B") = TextBox1
         .Cells(3, "C") = TextBox2
         .Cells(3, "D") = TextBox3
         .Cells(3, "E") = TextBox4
         .Cells(3, "F") = TextBox5
    End With
    With Worksheets("БД")
         .Cells(.iRow + 1, "F").Clear
         .Cells(.iRow + 1, "I").Clear
         .Cells(.iRow + 1, "J").Clear
    End With
End Sub
Ответить с цитированием
  (#20 (permalink)) Старый
Nasek Nasek вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.02.2015
По умолчанию 27.02.2015, 22:52

Я это пробовал раньше, не помогло, к сожалению. Возникает сообщение о 438 ошибке (Object doesn't support this property or method).
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 27.02.2015, 23:22

Смотрите пример
Вложения
Тип файла: zip Sample_for_Nasek.zip (10.8 Кб, 10 просмотров)
Ответить с цитированием
  (#22 (permalink)) Старый
Nasek Nasek вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.02.2015
По умолчанию 28.02.2015, 00:39

Мистика какая-то. Все вроде бы идентично, но ошибка все-таки у меня возникает. Посмотрите, пожалуйста: yad i.sk/i/YZeY0s2Yew4AY
Ответить с цитированием
  (#23 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 28.02.2015, 06:52

Nasek, Скажите, Вы правда не видите, что в моём примере переменная iRow об'явлена на уровне модуля (пост #17 - самая первая строка)
Ответить с цитированием
  (#24 (permalink)) Старый
Nasek Nasek вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.02.2015
По умолчанию 28.02.2015, 12:15

Прошу прощения за невнимательность. Строку установил. Ошибка исчезла, ячейки очищаются, но почему-то всегда только в первой строке листа "БД".
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 28.02.2015, 13:04

Значит эра невнимательности продолжается ...
Ответить с цитированием
  (#26 (permalink)) Старый
Nasek Nasek вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.02.2015
По умолчанию 01.03.2015, 19:00

Здравствуйте, pashulka!
Последняя проблема возникла вовсе не из-за невнимательности. Ну да бог с ней, решилась и она. Скажите, пожалуйста, можно ли одну и ту же использовать форму Card (расширенные сведения об организациях) не только для просмотра данных, но и для их корректировки?
Ответить с цитированием
  (#27 (permalink)) Старый
GAV_84 GAV_84 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.05.2015
По умолчанию Помогите пожалуйста - 08.05.2015, 16:39

Добрый день!
Ситуация следующая, есть таблица (прайс лист), где цена определяется пересечением строк и столбцов. Не могу создать код когда, при нажатии на ячейку ее значение автоматически переносится в другую ячейку. И так на одном листе несколько раз на разные ячейки, то есть должна формироваться табличка из нескольких строк и столбцов.
писали про код:
Цитата:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
If Not Intersect([B7:B1000], Target) Is Nothing Then
Target.Copy [A1]: Cancel = True
End If
End Sub
он работает, но только на один столбец или строку, а мне нужно охватить несколько столбцов и строк одновременно при этом что бы значения вставлялись в разные ячейки. Помогите пожалуйста я в отчаяние
Ответить с цитированием
  (#28 (permalink)) Старый
GAV_84 GAV_84 вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.05.2015
По умолчанию 08.05.2015, 17:50

Цитата:
Сообщение от GAV_84 Посмотреть сообщение
Добрый день!
Ситуация следующая, есть таблица (прайс лист), где цена определяется пересечением строк и столбцов. Не могу создать код когда, при нажатии на ячейку ее значение автоматически переносится в другую ячейку. И так на одном листе несколько раз на разные ячейки, то есть должна формироваться табличка из нескольких строк и столбцов.
писали про код:


он работает, но только на один столбец или строку, а мне нужно охватить несколько столбцов и строк одновременно при этом что бы значения вставлялись в разные ячейки. Помогите пожалуйста я в отчаяние
Всем спасибо! у меня получилось)))
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие на клике поля Nenado Delphi 3 04.03.2012 21:14
Задача о клике графа Serena Вопросы начинающих программистов 0 07.06.2011 19:06
Копировать строку в другую книгу Gvaridos Visual Basic 1 16.11.2010 19:12
Не открываются логические диски при двойном клике. Fargus Техническая поддержка 14 28.11.2008 12:06
Контекстное меню, при правом клике по форме. diment Visual Basic 22 18.12.2006 16:27
Не работают макросы. Ссылается на другую книгу Митяй Visual Basic 4 02.02.2006 20:50
Как скопировать файл из одной директории в другую Genadi C++ Builder 6 08.11.2005 07:48
Access как при клике на объект получать фокус imported_Алексей_М Другие СУБД 2 29.08.2005 17:00
Как скрыть один объект при клике на второй el-niko DHTML, JavaScript, VBScript 1 24.04.2005 23:26
Выполнение кода при клике на bitmap DmitriyG Visual C++ 5 14.10.2004 17:48
Как в Opere при клике на яч.таблицы сменить background img Anonymous DHTML, JavaScript, VBScript 0 30.11.2003 17:47
Как скопировать одну строку в другую Trian C++ Builder 6 20.05.2003 12:32



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов