Многие люди не знают, как мультивыбрать объекты в HTML <избранное> управление, таким образом, …?

Где я вижу повторение - это структура цикла. Я бы использовал такой код с однострочными условными выражениями, если не важно, какое условие увеличивает переменную счетчика. Вы можете добавить столько условий, сколько хотите, и код остается относительно плоским. Между прочим, хорошо использовать «явную опцию». В первой строке Workbook есть опечатка "Workbok"

Option Explicit

Sub test()
Dim workbook1 As Workbook
Set workbook1 = ThisWorkbook
Dim i As Long, count As Long
For i = 1 To Worksheets.count
    If IsEmpty(workbook1.Worksheets("Sheet" & i).Cells(1, 1)) Then count = count + 1
    If Application.CountA(workbook1.Worksheets("Sheet" & i).Range("$C$3:$E$5")) > 0 Then count = count + 1
Next i
End Sub

РЕДАКТИРОВАТЬ:
Вместо того, чтобы использовать разные переменные подсчета, как вы прокомментировали, я бы предпочел иметь все условия счетчики в одном месте. Это можно сделать с помощью массива или словаря.

Использование массива:

Option Explicit

Sub UseOfArray()
Dim workbook1 As Workbook
Set workbook1 = ThisWorkbook
Dim i As Long
Dim conditions_in_array(1 To 20) As Long

For i = 1 To Worksheets.count
    If IsEmpty(workbook1.Worksheets("Sheet" & i).Cells(1, 1)) Then conditions_in_array(1) = conditions_in_array(1) + 1
    If workbook1.Worksheets("Sheet" & i).Cells(1, 1).Interior.Color = 16777215 Then conditions_in_array(2) = conditions_in_array(2) + 1
Next i
Debug.Print "conditions_in_array(1): "; conditions_in_array(1); vbNewLine; "conditions_in_array(2): "; conditions_in_array(2)

End Sub

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

Sub UseOfDictionary()
Dim i As Long
Dim workbook1 As Workbook
Set workbook1 = ThisWorkbook
Dim conditions_in_dict As Scripting.Dictionary
Set conditions_in_dict = New Scripting.Dictionary
conditions_in_dict("cell_IsEmpty") = 0
conditions_in_dict("cell_uncolored") = 0
'here you can enter more keys as conditions as above

For i = 1 To Worksheets.count
    If IsEmpty(workbook1.Worksheets("Sheet" & i).Cells(1, 1)) Then conditions_in_dict("cell_IsEmpty") = conditions_in_dict("cell_IsEmpty") + 1
    If workbook1.Worksheets("Sheet" & i).Cells(1, 1).Interior.Color = 16777215 Then conditions_in_dict("cell_uncolored") = conditions_in_dict("cell_uncolored") + 1
Next i
Debug.Print "conditions_in_dict(""cell_IsEmpty""): "; conditions_in_dict("cell_IsEmpty"); vbNewLine; _
"conditions_in_dict(""cell_uncolored""): "; conditions_in_dict("cell_uncolored")

End Sub
9
задан Magnus Smith 15 October 2008 в 09:11
поделиться

5 ответов

Вы могли просто использовать ручной список объектов (Скажите как простые ссылки), которые имеют JavaScript onclick поведение, которое отменяет выбор/выбирает вручную. В основном путем изменения класса CSS между двумя значениями и проверки их CSS (Или некоторый другой атрибут) во время представления для определения выборов.

Это позволило бы пользователю просто выбирать объект путем нажатия, и отмену выбора путем нажатия, а не стандартное требование Ctrl+Click.

2
ответ дан 4 December 2019 в 08:17
поделиться

Я предлагаю использовать два поля списков, один с доступными, и один с выбранными. Нажатие или двойной щелчок по объекту в одном из списков должны переместить объект в другой список. Для удобства я также включал бы две кнопки "Move", чтобы сделать то же. Этот подход работает удивительно хорошо со средними пользователями в веб-приложениях, а также настольных приложениях.

9
ответ дан 4 December 2019 в 08:17
поделиться

Поскольку нечастые пользователи, имеющие три холма отбрасывания, могли бы работать лучшее>:

<select><option>Capa Verde</option></select>
<select><option>Holiday</option></select>
<select><option>Competition</option></select>

С другой стороны, у Вас мог бы быть диапазон кнопок, которые придерживаются когда-то нажатый. Однако будет трудным затем передать ограничение до трех опций.

Если необходимо отметить каждую фотографию индивидуально и существует ограниченное количество категорий, которые Вы могли отобразить, список категорий (может быть в нескольких столбцах) прямо сверху фотографии (очевидно, необходимо было бы удостовериться объекты читаемое и указать, что они предоставляют нажатие), и позвольте пользователям выбрать и отменить выбор тегов одиночным нажатием. Это не очень дружественная клавиатура, однако его главным образом невозможное для использования сети без своего рода манипулятора. В этом случае Вы использовали бы пространственное расположение для соединения категорий и фотографий.

Существуют различные варианты с двумя грудами (доступны и выбраны) и т.д.

Можно ли сделать, по крайней мере, тестирование удобства пользования "прихожей"?

Какова фактическая задача в пользовательских терминах и кто пользователи?

1
ответ дан 4 December 2019 в 08:17
поделиться

Я ненавижу мультивыбор, особенно когда объект может позже быть отредактирован (если Вы нажимаете, не держа CTRL, Вы теряете то, что Вы уже выбрали). Лучшие две опции, по моему опыту:

  1. Наличие трех отдельных избранных опций (если Вы ограничиваете три). Преимущество здесь - то, что Вы - инструкции "выбора, который до трех" содержат очень хорошо с пользовательским опытом и с небольшим JavaScript, можно удалить первый выбор из второго выпадающего таким образом удаляющий беспорядок.
  2. Используя флажки. Преимущество флажков - то, что это, вероятно, соответствует Вашей базе данных лучше, плюс информация довольно интуитивно пользователю и с небольшим количеством мысли, как Вы представляете опции, пользовательский опыт может быть довольно основательным.напр. Группировка флажков в области, которые имеют смысл.
1
ответ дан 4 December 2019 в 08:17
поделиться

Альтернативы, которые я использовал в прошлом:

1) Для небольшого количества объектов используют список флажка. Флажки намного более интуитивны и просты использовать, но для большого количества объектов это может, стал проблемой. Однако, когда количество объектов растет, можно добавить a:

<div style="overflow: scroll" />

с фиксированной высотой.

2) Для очень большого количества объектов становится трудным видеть то, что действительно выбрано особенно, когда существует немного объектов, на самом деле выбранных. В этом случае два списка бок о бок с возможностью переместить объекты от одного до другого являются намного лучшим подходом.

3) Когда количество объектов не является очень большим, но больше, чем некоторые, я использовал выпадающее со сборкой флажков, внутренней, который имеет преимущество занятия только небольшого места. Что-то вроде этого могло бы помочь.

13
ответ дан 4 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: