0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24

Изменение данных в ячейках с UserForm

23.11.2011, 23:21. Показов 9489. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
умоляю помогите с ума схожу уже с этой таблицей.
Проблема с копкой Изменить на второй форме, т.к таблица с автофильтром не соображу как можно записать изменения в нужной мне ячейке. По нажатию в ListBox возможно ли как нибудь приписать номер строке выбранному студенту???
Вложения
Тип файла: zip Mitgliederliste_Excel1.zip (56.9 Кб, 82 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2011, 23:21
Ответы с готовыми решениями:

Поиск на листе и визуальное изменение данных в ячейках
примерный текст задачи. Программа произвольно заполняет произвольный диапазон, с помощью Randomize от 0 до 50. Пользователь задает какой...

Изменение данных в ячейках в зависимости от ввода в диалоговом окне
Добрый день, Имеется файл, в котором часть ячеек неизменны, а часть нужно изменять в зависимости от того, кто открыл файл. При отркытии...

Запретить изменение типа данных в ячейках листа Excel
Всем доброго времени суток! Надо как-то запретить пользователям изменять тип данных в 2 столбцах. Например, там стоит числовой, так...

34
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
23.11.2011, 23:57  [ТС]
ну может хоть какую-нибудь идейку подкините, а то у меня уже мозги в кучу
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
24.11.2011, 09:09
Не ясно, что Вы хотите получить. Отвлекаясь от программы, скажите, как узнать, какую из строк вы хотите менять, если хотите это сделать? Если это единственная строка, которая будет отфильтрована автофильтром, тогда ясно. Я Вас правильно понимаю?
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 10:22  [ТС]
хочу сразу сказать что раньше никогда не работала с екселем, все что уже сделала в этой программе это мое первооткрытие В общем на форме Sort пользователь может с помощью комбобоксов находить нужных студентов, например по индексу(PLZ), по нажатию Enter в listboxe показанны все студенты с выбранным индексом, выбирая какого-либо студента с Листбокса мышкой все его данные разносятся по комбобокса и текстбоксам, я например хочу изменить номер телефона этого студента или мейл изменяя его в текстабоксе и нажатием кнопки Изменить сохранить изменения в нужной мне ячейки. Так как Лист excel с автофильтром строки не совпадают с ЛистБоксом и я не пойму что нужно задать программе чтобы она поменяла значение именно в той линейке и ячейке которая мне нужна...О_о

Добавлено через 5 минут
Цитата Сообщение от mc-black Посмотреть сообщение
Не ясно, что Вы хотите получить. Отвлекаясь от программы, скажите, как узнать, какую из строк вы хотите менять, если хотите это сделать? Если это единственная строка, которая будет отфильтрована автофильтром, тогда ясно. Я Вас правильно понимаю?
понимаю что нужно ListBox.ListIndex = но что потом...
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 13:00
находить нужных студентов, например по индексу(PLZ)
Это принципиально? Искать сначала по индексу, а потом конкретного студента?
Предложу 2 варианта:
1. В комбобоксе список всех студентов. Выбор визуальный
2. В текстбоксе начинается вводиться фамилия студента. Сразу список показывает все совпадения.
Т. е. при вводе 1 буквы будут показаны все студенты на эту букву. При вводе вторй только те у которых сопадают две буквы. Дальше можно вводить или просто выбрать в списке нужного.
По клику по фамилии его данные разнесутся по контролам
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 13:30  [ТС]
ну сейчас я этого уже менять не буду увы время поджимает, мне самое главное внести измененые данные назад в таблицу
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 14:12
Со всем кодом разбираться не стал - похоже таблица заполнена некорректными данными и ексле ругается при выборе некоторых студентов.
Добавил ещё один комбик
У первого поставил ссылку на фамилии(блок заполнения его при активации закомментил)
При выборе фамилии находятся все такие фамилии и имена заносятся во вторй комбик.
Если имя одно - оно показывается.
Если не одно - надо выбрать.
При выборе идёт поиск по двум полям(предполагается не будет двух студентов с одинаковыми фамилиями и именами) Намер строки сохраняется в глобальной переменной
А вообще код можно было бы значительно сократить если загнать поля в массив
Вложения
Тип файла: rar Mitgliederliste_Excel2.rar (49.1 Кб, 111 просмотров)
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 14:47  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Со всем кодом разбираться не стал -
спасибо большое, но меня интересует вторая форма,когда открывается форма надо нажать кнопку "Sortieren", появляется вторая форма где я хочу менять данные

Добавлено через 17 минут
на первой форме это просто добавить нового студента в таблицу
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 14:48
Visual Basic
1
2
3
          Arr =  Range(Cells(1, 1), Cells(iLastRow, 34)).Value
          '.ColumnHeads = True
         .List = Arr
Ну у тебя же лист назначается Range!
Значит и ListIndex будет соответствовать номеру строки(со смещением на 1. У листбокса пирвая запись под номерим 0)
Т.е. номер строки будет на 1 больше ListIndex

Visual Basic
1
2
3
      For x = 0 To .ListCount - 1
        If .Selected(x) Then zazn = x: Exit For
      Next x
Зачем перебирать все строки в поисках выделенной? Для этого и существует ListIndex
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 15:04  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
[VB] Зачем перебирать все строки в поисках выделенной? Для этого и существует ListIndex
т.е. так?

Visual Basic
1
2
3
Else
         Me.CmbVorname = .Column(4, .ListIndex)
         Me.CmbPlz = .Column(6, .ListIndex)
или что?

боже у меня уже каша в голове

так а что мне делать с кнопкой чтобы изменить данные в ячейке
Visual Basic
1
2
3
4
5
6
7
Private Sub CbuttIzmenit_Click()
 
 
ListBox1.ListIndex = 
 
 
End Sub
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 15:14
Не знаю что написано на кнопке
Ты хочешь сохранить изменения?
Тогда (я же говорил выше)
Visual Basic
1
2
3
4
With Worksheets("Mitgliederliste_Excel")
i = ListBox1.ListIndex + 1
 
.Cells(i, 27).Value = Sort.TbTelP.Text
Добавлено через 4 минуты

Не по теме:

1400 строк кода!! Сколько же там лишнего!!!

0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 15:35  [ТС]
попробывала такое понимаю что ерунда, так записывает в тех же самых линейках как они идут в листбоксе, но не там где мне надо

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub CbuttAndern_Click()
 Dim i As Long
 
With Worksheets("Mitgliederliste_Excel")
i = .Cells(ListBox1.ListIndex, 1).End(xlUp).Offset(ListBox1.ListIndex, 0).Row
 
.Cells(i, 27).Value = Sort.TbTelP.Text
 
.Cells(i, 28).Value = Sort.TbTelD.Text
 
.Cells(i, 29).Value = Sort.TbFaxP.Text
 
.Cells(i, 30).Value = Sort.TbFaxD.Text
 
.Cells(i, 31).Value = Sort.TbFaxD.Text
End With
MsgBox "Ist gespeichert!"
End Sub
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 15:38
Visual Basic
1
2
i = .Cells(ListBox1.ListIndex, 1).End(xlUp).Offset(ListBox1.ListIndex, 0).Row
i = ListBox1.ListIndex + 1
Разницу не улавливаешь?

Добавлено через 1 минуту
У тя конретно указываетя номер строки!
Зачем что-то искать?Последнюю?
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 15:45  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Не знаю что написано на кнопке
Ты хочешь сохранить изменения?
Тогда (я же говорил выше)
Visual Basic
1
2
3
4
With Worksheets("Mitgliederliste_Excel")
i = ListBox1.ListIndex + 1
 
.Cells(i, 27).Value = Sort.TbTelP.Text
Добавлено через 4 минуты

Не по теме:

1400 строк кода!! Сколько же там лишнего!!!

на счет лишнего знаю, я ведь только учусь
Visual Basic
1
i = ListBox1.ListIndex + 1
тоже не подходит так как строки в листбоксе не совпадают со строками на листе, ListIndex + 1 записывает по очереди в следующию строку
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 15:46
Ну убери +1
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 16:13  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Ну убери +1
спасибо хоть настроение поднял

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

Добавлено через 9 минут
поэтому я и спрашивала как можно приписать номер линейки с листа выброному в листбоксе

Добавлено через 8 минут
или может возможно сделать что то тако:
после фильтрации у меня видимые строки копируются на другой лист, от туда показанны в листбоксе, там меняется все правильно так как нет автофильтра.

Возможно ли назад скопировать измененый лист на главный лист,чтобы линейки попали на свое место))) ой помоему это заморочка
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 16:15
Можно добавить в таблицу номер строки и привязку брать оттуда
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 16:27  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Можно добавить в таблицу номер строки и привязку брать оттуда


подскажи пожалуйста, есть возможность другая обновить листбокс не копируя только видимые строки??
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.11.2011, 17:02
Я делал похожую работу по другому принципу:
Не ставил автофильтр на лист, а считывал таблицу в массив.
И уже массив фильтровал и выводил в список.
Так же у меня был в каждой строке и номер строки в таблице для обратной связи

Добавлено через 3 минуты
А сейчас, наверное, проще добавить номер строки в конце таблицы.
А после внесения внести изменения пробежавшись по другому листу и внести изменения в основной привязываясь к номеру строки
0
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 24
24.11.2011, 19:41  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
А после внесения внести изменения пробежавшись по другому листу и внести изменения в основной привязываясь к номеру строки
т.е. так как я и писала со второго листа скопировать редактированую таблицу на главный лист, да? а можно по подробней про "привязываясь к номеру строки"...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2011, 19:41
Помогаю со студенческими работами здесь

Запретить изменение данных в таблице (adoquery), с определенным значением в ячейках строк
Добрый вечер. Подскажите пожалуйста как реализовать данную задачу - "запретить изменение данных в таблице (adoquery), с определенным...

Изменение теста VBA Excel UserForm
Как изменить вопросы в этом тесте?

Изменение значения в ячейках stringgrid
Здравствуйте, такая проблема, суть задачи в замене столбцов в которых лежат наибольший и наименьший элементы матрицы, никак не могу...

Синхронное изменение текста в двух ячейках
Как сделать так чтобы при наборе (при изменении) цифр в поле Данные2 менялось сумма в поле Text171

Изменение цвета во всех ячейках одного столбца DBGrid
Добрый день! Я меняю цвет одной ячейке в DBGrid следующим образом: void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru