Nano Hash - криптовалюты, майнинг, программирование

Проверить содержимое - не разрешать пользователю входить - сообщать о неверных данных

Я пытаюсь написать программу для выполнения следующих шагов:

  • Находясь в ячейке M2, проверьте содержимое всех ячеек перед столбцом M в той же строке.
  • Если какая-либо из ячеек перед столбцом M в той же строке пуста, не позволяйте пользователю вводить какое-либо значение в ячейку M2. RAther выдает пользователю сообщение о пустых данных.
  • Создает отчет в ячейке N2 о недостающих данных (первая строка Excel имеет заголовки данных, содержащихся в столбцах)

Проблемы, возникающие до сих пор: Неопределенный цикл - я думаю, что при очистке содержимого цикл снова запускается, что вызывает эту проблему.

Я не уверен, хорош ли код конкатенации или нет.

Программа ниже:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$M$2" Then    
MsgBox "1"    
Call MyMacro    
End If    
End Sub


Sub MyMacro()

'If [OR(ISBLANK(A2:L2))] Then
If ISBLANK(A2) Then
MsgBox "2"
Range("N2").Select
ActiveCell.Value = N2.Value + A1.Value
'Range("M2").ClearContents
'MsgBox "3"

'this the message that pops up if any cell in the range is blank
End If

End Sub

Заранее спасибо за ответ...

08.11.2012

  • Вы хотите это только для строки 2 или для нескольких строк? 08.11.2012

Ответы:


1

Другой вариант, который не использует макросы, — использовать проверку данных в столбце M с пользовательской формулой.

=counta(A2:L2)=12

и пользовательское сообщение об ошибке «Пустые ячейки в столбцах от A до L».

Это, конечно, не дает вам недостающие ячейки, но вы можете получить первую с этой формулой массива (введите с помощью Ctrl + Shift + Enter)

=IFERROR(ADDRESS(ROW(),MATCH(TRUE,A2:L2="",0)),"")

08.11.2012
  • Data Validation является хорошей альтернативой, если дальнейшее кодирование изменения M2 не требуется. 08.11.2012

  • 2

    Что-то вроде этого будет

    1. проверка пробелов (истинных пробелов) в A2:L2 при изменении M2
    2. Выключите Events, чтобы избежать перезагрузки кода, если используется N2
    3. сбросить эти оскорбительные диапазоны ячеек в N12 есть ли пробелы

    код

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng1 As Range
    If Intersect(Target, Range("M2")) Is Nothing Then Exit Sub
    With Application
    .EnableEvents = False
    On Error Resume Next
    Set rng1 = Range("A2:L2").Cells.SpecialCells(xlBlanks)
    On Error GoTo 0
    If Not rng1 Is Nothing Then
    MsgBox "blank cells in " & rng1.Address(0, 0), vbCritical, "User entry in M2 removed"   
    [n2] = rng1.Address
    [m2].Clear
    End If
    .EnableEvents = True
    End With
    End Sub
    
    08.11.2012
  • не было бы смысла запускать это в событии worksheet_Selectionchange, чтобы вы могли поймать его до того, как будет введено какое-либо значение? Кроме того, вы все еще позволяете значению сохраняться в M2, не так ли? 08.11.2012
  • Включено (1), но вы можете выбрать всю строку или лист (2) Хорошая мысль - я обновлю для этого 08.11.2012
  • я бы побежал if target.cells.count=1 and not intersect(target,range("M2")) is nothing then 08.11.2012
  • Я по-прежнему предпочитаю стирать ячейку M2, а не захватывать выделение (я добавил стирание, теперь оставьте свой комментарий). Событие Change фиксирует изменения, вызванные кодом, Select вряд ли (если код некачественный). Кроме того, непрерывное Change будет менее интенсивным в фоновом режиме по сравнению с продолжающимся Select 08.11.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..