Если ячейка пуста, заполните текстовыми данными другой ячейки

#excel #vba #if-statement #userform

#excel #vba #if-оператор #пользовательская форма

Вопрос:

Для вас, экспертов, это, вероятно, просто. Я перепробовал так много способов и в стольких местах в коде, но ни один из них не работает для меня. Пожалуйста, помогите!

Все, что я пытаюсь сделать, это получить данные из ДИАПАЗОНА ЯЧЕЕК B4: B4000 для автоматического копирования в ДИАПАЗОН ЯЧЕЕК J4: J4000, если ДИАПАЗОН ЯЧЕЕК J4: J4000 будет пустым.

К вашему СВЕДЕНИЮ: Данные вводятся через пользовательскую форму.

 Option Explicit

Private Sub CmdButton_CONTINUE1_Click() 

Dim TargetRow As Integer
Dim FullName As String   'Variable for FULL NAME = CELL RANGE J4:J4000
Dim QBFileName As String   'Variable Quick Books File Name = CELL RANGE B4:B4000
Dim UserMessage As String

FullName = Txt_Client_First_Name amp; " " amp; Txt_Client_LAST_Name
QBFileName = Txt_QB_File_Name

'begin check if EDIT or ADD New Entry Mode
If Sheets("Engine").Range("B4").Value = "NEW" Then  'ADD New Entry Mode


'BEGINS VALIDATION CHECK: IF in "ADD New Entry Mode" mode to prevent duplicate FULL NAME J Column entries

If Application.WorksheetFunction.CountIf(Sheets("Database").Range("J3:J4000"), FullName) > 0 Then

MsgBox "Client's Full Name already exists", 0, "Check" 
Exit Sub 

End If  'ends validation check OF Duplicate FULLNAME (J Column)


'BEGINS VALIDATION CHECK: IF in "ADD New Entry Mode" to prevent duplicate QBFileName B Column entries

If Application.WorksheetFunction.CountIf(Sheets("Database").Range("B3:B4000"), QBFileName) > 0 Then

MsgBox "QuickBooks File Name already exists", 0, "Check" 
Exit Sub 

End If
~~~~
  

Комментарии:

1. Опубликовано: ozgrid.com/forum/forum/help-forums/excel-vba-macros /…

Ответ №1:

 Private Sub CmdButton_CONTINUE1_Click()

Dim TargetRow As Integer
Dim FullName As String   'Variable for FULL NAME = CELL RANGE J4:J4000
Dim QBFileName As String   'Variable Quick Books File Name = CELL RANGE B4:B4000
Dim UserMessage As String

FullName = Txt_Client_First_Name amp; " " amp; Txt_Client_LAST_Name
QBFileName = Txt_QB_File_Name

'begin check if EDIT or ADD New Entry Mode
If Sheets("Engine").Range("B4").Value = "NEW" Then  'ADD New Entry Mode


'BEGINS VALIDATION CHECK: IF in "ADD New Entry Mode" mode to prevent duplicate FULL NAME J Column entries

If 1   UBound(Split(Application.Trim(Replace(Replace(Join(Application.Transpose(Range("J3:J4000")), Chr(1)), " ", Chr(2)), Chr(1), " ")))) > 0 Then

MsgBox "Client's Full Name already exists", 0, "Check"
Exit Sub

End If  'ends validation check OF Duplicate FULLNAME (J Column)


'BEGINS VALIDATION CHECK: IF in "ADD New Entry Mode" to prevent duplicate QBFileName B Column entries

If 1   UBound(Split(Application.Trim(Replace(Replace(Join(Application.Transpose(Range("B3:B4000")), Chr(1)), " ", Chr(2)), Chr(1), " ")))) > 0 Then

MsgBox "QuickBooks File Name already exists", 0, "Check"
Exit Sub

End If

End Sub
  

Комментарии:

1. Привет, Ронан, большое спасибо. Этот код оказался намного сложнее, чем я ожидал. Однако это не сработало. 🙁 Проблема: каждая новая запись говорит о существовании полного имени. Я скопировал ваш код и заменил им свою строку кода, но не тут-то было.

2. MUMPS в Ozgrid решил эту проблему! ozgrid.com/forum/forum/help-forums/excel-vba-macros/…

Ответ №2:

MUMPS в Ozgrid решил эту проблему!

https://www.ozgrid.com/forum/forum/help-forums/excel-vba-macros/1216775-if-a-cell-is-blank-fill-with-other-cell’s-text-data

ДА!!! СПАСИБО, СВИНКА!