2015-04-07 2 views
0

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

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

Private Sub cmdSendPIDdata_Click() 
Cells.AutoFilter 
'Advance to last row 
Range("B1").End(xlDown).Offset(1, 0).Select 

'Constants and user data 
Range("B" & (ActiveCell.Row)).Value = "'" & SamplePointID 
Range("J" & (ActiveCell.Row)).Value = "'PID MEASUREMENT" 
Range("N" & (ActiveCell.Row)).Value = "'PPB" 
Range("F" & (ActiveCell.Row)).Value = "'" & dtpSampleDate.Value 
Range("G" & (ActiveCell.Row)).Value = "'" & txtTime.Value 
Range("H" & (ActiveCell.Row)).Value = "'" & lbxSampleType.Value 
Range("K" & (ActiveCell.Row)).Value = "'" & txtConcentration.Value 
Range("AK" & (ActiveCell.Row)).Value = "'" & lbxSampleLocation.Value 
Range("AN" & (ActiveCell.Row)).Value = "'" & lbxSampledBy.Value 

Unload Me 
frmPIDDataEntry.Show 

End Sub

Если ничего не выбрано в списке, это очистка существующего значения в соответствующем диапазоне.

ответ

0

Вы можете добавить инструкцию IF, чтобы проверить значение поля списка, а затем выйти, если вы видите, что это = ничего. Вопрос немного расплывчатый, так что мой ответ тоже.

Private Sub cmdSendPIDdata_Click() 

' Add something like this. 
If ListBox.value = vbnullstring then Exit Sub 

Cells.AutoFilter 
'Advance to last row 
Range("B1").End(xlDown).Offset(1, 0).Select 

'Constants and user data 
Range("B" & (ActiveCell.Row)).Value = "'" & SamplePointID 
Range("J" & (ActiveCell.Row)).Value = "'PID MEASUREMENT" 
Range("N" & (ActiveCell.Row)).Value = "'PPB" 
Range("F" & (ActiveCell.Row)).Value = "'" & dtpSampleDate.Value 
Range("G" & (ActiveCell.Row)).Value = "'" & txtTime.Value 
Range("H" & (ActiveCell.Row)).Value = "'" & lbxSampleType.Value 
Range("K" & (ActiveCell.Row)).Value = "'" & txtConcentration.Value 
Range("AK" & (ActiveCell.Row)).Value = "'" & lbxSampleLocation.Value 
Range("AN" & (ActiveCell.Row)).Value = "'" & lbxSampledBy.Value 

Unload Me 
frmPIDDataEntry.Show 

End Sub 
0

Возможно добавление к сообщению @ twenger, вы можете попробовать что-то просто в следующем. Вы должны добавить это к каждому диапазону, в котором есть информация о записи ListBox, и это может показаться немного громоздким для программиста, но это работает для меня. Надеюсь, это даст вам некоторые идеи или поможет вам в правильном направлении.

myRow = ActiveCell.Row 
result1 = ListBox1.Value 

If result1 = vbnullstring Then 
    Range("B" & myRow).Value = SamplePointID 
Else 
    Range("B" & myRow).Value = result1 & " " & SamplePointID 
End If 

 Смежные вопросы

  • Нет связанных вопросов^_^