Я новичок в кодировании StackOverflow и VBA, и благодаря моим навыкам C & P / редактирования мне удалось создать любительскую CRM для своих нужд в моей компании.
Скриншот пользовательской формы
Я создал пользовательскую форму (вы можете прикрепить скриншот к ней), которая хранит данные на одном листе (Maindata), а такжесоздает новый другой (имя листа получает свое имя из текстового поля идентификатора центра, то есть его динамику), который содержит конкретные данные этого центра и финансовые прогнозы.
Позвольте мне дать вам краткий обзор электронной таблицы;
Maindata: ввод данных начинается с A2 и продолжается до AU2 (всего 47 столбцов), что электронная таблица еще не заполнена, но когда это произойдет, вероятно, будет +400 строк.
В основномто, чего я хочу достичь, это;Возможность поиска и обновления в пользовательской форме.Я не могу вернуть предварительно зарегистрированные данные в свою форму пользователя.Поиск также должен привести к частичным совпадениям, поэтому при поиске может быть несколько реестров.Чтобы выбрать правильный из поискового запроса, я добавил список, в котором должны отображаться результаты поиска, а при двойном щелчке он возвращает данные всей строки обратно в форму пользователя.В момент обновления он должен обновить / перезаписать соответствующую строку (не следует создавать новый реестр) и обновить динамические именованные листы (которые создаются с тем же именем с «идентификатором центра» в указанном реестре)ячейки.
Чтобы быть более точным с поиском и обновлением;
- Пользователь будет вводить в "textbox1"
- Нажать кнопку поиска, которая называется "cbSearch"
- Соответствующие реестры будут перечислены в «listbox1»
- При двойном щелчке пользовательская форма будет заполнена выбранной регистрационной информацией. (Listbox покажет 4 скопления данных, но после dclick остальная информациябудет отображаться в пользовательской форме)
- Кнопка «Обновить» должна перезаписывать существующую информацию на листе «maindata» и листе, который совпадает с его ID центра.
Если вы можете показать мне, как заполнить текстовое поле информацией о выбранном элементе из списка, я могу адаптировать его к остальным 46 столбцам :)
Информация столбца "A"должен войти в = TB0 "B" информация столбца должна войти в = STN
Я помещаю код кнопки сохранения, который имеет% 90 кода в пользовательской форме.
Private Sub CommandButton1_Click()
If TB0.Value = "" Or STN.Value = "" Or cbCountry.Value = "" Or tbCity.Value = "" Then
If TB0.Value = "" Then
TB0.BackColor = vbRed
End If
If STN.Value = "" Then
STN.BackColor = vbRed
End If
If cbCountry.Value = "" Then
cbCountry.BackColor = vbRed
End If
If tbCity.Value = "" Then
tbCity.BackColor = vbRed
End If
MsgBox "Please Fill The Required Fields", vbCritical
Exit Sub
End If
If CP1.Value = "" And CP2.Value = "" And CP3.Value = "" Then
If CP1.Value = "" Then
CP1.BackColor = vbRed
End If
If CP2.Value = "" Then
CP2.BackColor = vbRed
End If
If CP3.Value = "" Then
CP3.BackColor = vbRed
End If
MsgBox "Center Price Is Required", vbCritical
Exit Sub
End If
'Make Daily_Tracking_Dataset active
Worksheets("MainData").Activate
'Determine emptyRow
Emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer Information
Cells(Emptyrow, 1).Value = TB0.Value
Cells(Emptyrow, 2).Value = STN.Value
Cells(Emptyrow, 3).Value = cbCountry.Value
Cells(Emptyrow, 4).Value = tbCity.Text
Cells(Emptyrow, 5).Value = cbLab.Value
Cells(Emptyrow, 6).Value = tba.Value
Cells(Emptyrow, 7).Value = tbb.Value
Cells(Emptyrow, 8).Value = tbc.Value
Cells(Emptyrow, 9).Value = tbd.Value
Cells(Emptyrow, 10).Value = ctb1.Value
Cells(Emptyrow, 11).Value = ctb2.Value
Cells(Emptyrow, 12).Value = ctb3.Value
Cells(Emptyrow, 13).Value = ctb4.Value
Cells(Emptyrow, 14).Value = ctb5.Value
Cells(Emptyrow, 15).Value = ctb6.Value
Cells(Emptyrow, 16).Value = ctb7.Value
Cells(Emptyrow, 17).Value = ctb8.Value
Cells(Emptyrow, 18).Value = ctb9.Value
Cells(Emptyrow, 19).Value = ctb10.Value
Cells(Emptyrow, 20).Value = ctb11.Value
Cells(Emptyrow, 21).Value = ctb12.Value
Cells(Emptyrow, 22).Value = ctb13.Value
Cells(Emptyrow, 23).Value = ctb14.Value
Cells(Emptyrow, 24).Value = ctb15.Value
Cells(Emptyrow, 26).Value = tb11.Value
Cells(Emptyrow, 27).Value = CP1.Value
Cells(Emptyrow, 28).Value = CP2.Value
Cells(Emptyrow, 29).Value = CP3.Value
Cells(Emptyrow, 30).Value = CP4.Value
Cells(Emptyrow, 31).Value = Pricingbox1.Value
Cells(Emptyrow, 32).Value = Pricingbox2.Value
Cells(Emptyrow, 33).Value = Pricingbox3.Value
Cells(Emptyrow, 34).Value = Pricingbox4.Value
Cells(Emptyrow, 35).Value = Pricingbox5.Value
Cells(Emptyrow, 36).Value = Pricingbox6.Value
Cells(Emptyrow, 37).Value = Pricingbox7.Value
Cells(Emptyrow, 38).Value = Pricingbox8.Value
Cells(Emptyrow, 39).Value = Pricingbox9.Value
Cells(Emptyrow, 40).Value = Pricingbox10.Value
Cells(Emptyrow, 41).Value = Pricingbox11.Value
Cells(Emptyrow, 42).Value = Costtb1.Value
Cells(Emptyrow, 43).Value = Costtb2.Value
Cells(Emptyrow, 44).Value = Costtb3.Value
Cells(Emptyrow, 45).Value = Costtb4.Value
Cells(Emptyrow, 46).Value = Costtb5.Value
Cells(Emptyrow, 47).Value = VAT.Value
myvar = ""
For x = 0 To Me.lb.ListCount - 1
If Me.lb.Selected(x) Then
If myvar = "" Then
myvar = Me.lb.List(x, 0)
Else
myvar = myvar & "," & Me.lb.List(x, 0)
End If
End If
Next x
Cells(Emptyrow, 25).Value = myvar
Dim Newsheet, SheetName2 As String
Newsheet = STN.Text
SheetName2 = ActiveSheet.Name
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = Newsheet
Sheets("template").Visible = True
Sheets("Template").Select
Cells.Select
Selection.Copy
Sheets(Newsheet).Select
ActiveSheet.Paste
Range("A10").Value = STN.Value
Range("B10").Value = cbCountry.Value
Range("C10").Value = CP1.Value
Range("D10").Value = CP2.Value
Range("E10").Value = CP3.Value
Range("F10").Value = CP4.Value
Range("G10").Value = Pricingbox1.Value
Range("I10").Value = Pricingbox2.Text
Range("K10").Value = Pricingbox3.Value
Range("M10").Value = Pricingbox4.Value
Range("O10").Value = Pricingbox5.Value
Range("Q10").Value = Pricingbox6.Value
Range("S10").Value = Pricingbox7.Value
Range("U10").Value = Pricingbox8.Value
Range("w10").Value = Pricingbox9.Value
Range("y10").Value = Pricingbox10.Value
Range("aa10").Value = Pricingbox11.Value
Range("a12").Value = Costtb1.Value
Range("b12").Value = Costtb2.Value
Range("c12").Value = Costtb3.Value
Range("d12").Value = Costtb4.Value
Range("e12").Value = Costtb5.Value
Range("F12").Value = VAT.Value
Range("g12").Value = cbLab.Value
Range("h12").Value = tba.Value
Range("ı12").Value = tbb.Value
Range("j12").Value = tbc.Value
Range("k12").Value = tbd.Value
Range("b2").Value = ctb1.Value
Range("d2").Value = ctb2.Value
Range("f2").Value = ctb3.Value
Range("b3").Value = ctb4.Value
Range("d3").Value = ctb5.Value
Range("f3").Value = ctb6.Value
Range("b4").Value = ctb7.Value
Range("d4").Value = ctb8.Value
Range("f4").Value = ctb9.Value
Range("b5").Value = ctb10.Value
Range("d5").Value = ctb11.Value
Range("f5").Value = ctb12.Value
Range("b6").Value = ctb13.Value
Range("d6").Value = ctb14.Value
Range("f6").Value = ctb15.Value
Sheets("template").Visible = False
Dim cell As Range, ws As Worksheet
With Sheets("MainData") 'Sheet with the hyperlink sheet names
On Error Resume Next
For Each cell In .Range("B1", .Range("B" & Rows.Count).End(xlUp)) 'Loop for each used cell in column A
If cell.Value <> "" Then
Set ws = Nothing
Set ws = Sheets(cell.Value)
If Not ws Is Nothing Then
.Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:=("'" & cell.Value & "'!B1")
End If
End If
Next cell
On Error GoTo 0
End With
End Sub
Заранее спасибо!