我对此非常陌生,我试图制作一个VBA程序,根据您输入的条件找到一行,但是错误“70”,权限被拒绝
有一条老线索让我发现了这个问题,这里是:Old thread with the begining of my problem
这个问题是从填充组合框时出错开始的,如果有人知道锄头来解决这个问题,请帮助我,我对这件事很迷茫。
提前感谢
这是完整的代码:
Private Sub CheckBox10_Click()
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = Null Then
TextBox1.Enabled = False
Else
TextBox1.Enabled = True
End If
End Sub
Private Sub CommandButton1_Click()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub OptionButton1_Click()
End Sub
Private Sub OptionButton2_Click()
End Sub
Private Sub TabStrip1_Change()
Call UpdateRevenue
End Sub
Private Sub ListBox2_Click()
End Sub
Private Sub MultiPage1_Change()
End Sub
Private Sub TextBox1_Change()
NumeroDatos = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
Hoja1.AutoFilterMode = False
Me.Lista = Clear
Me.Lista.RowSource = "'Hoja1'!TablaPrincipal"
For fila = 4 To NumeroDatos
'-----------------------------
'----variables de valores-----
'-----------------------------
link = Hoja1.Cells(fila, 1).Value
descrip = Hoja1.Cells(fila, 2).Value
informe = Hoja1.Cells(fila, 3).Value
fecha = Hoja1.Cells(fila, 4).Value
comuna = Hoja1.Cells(fila, 5).Value
sector = Hoja1.Cells(fila, 6).Value
calle = Hoja1.Cells(fila, 7).Value
tipo = Hoja1.Cells(fila, 8).Value
superficie = Hoja1.Cells(fila, 9).Value
valorUF = Hoja1.Cells(fila, 10).Value
'-----------------------------
'----variables de valores-----
'-----------------------------
'-----------------------------
'----Si el link coincide-----
'-----------------------------
If ComboBox1.ListIndex = 0 Then
If UCase(link) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si la descripción coincide-----
'-----------------------------
If ComboBox1.ListIndex = 1 Then
If UCase(descrip) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si el informe coincide-----
'-----------------------------
If ComboBox1.ListIndex = 2 Then
If UCase(informe) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si la fecha coincide-----
'-----------------------------
If ComboBox1.ListIndex = 3 Then
If UCase(fecha) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si la comuna coincide-----
'-----------------------------
If ComboBox1.ListIndex = 4 Then
If UCase(comuna) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si el sector coincide-----
'-----------------------------
If ComboBox1.ListIndex = 5 Then
If UCase(sector) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si la calle coincide-----
'-----------------------------
If ComboBox1.ListIndex = 6 Then
If UCase(calle) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si el tipo coincide-----
'-----------------------------
If ComboBox1.ListIndex = 7 Then
If UCase(tipo) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si la superficie coincide-----
'-----------------------------
If ComboBox1.ListIndex = 8 Then
If UCase(superficie) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
'-----------------------------
'----Si el valorUF coincide-----
'-----------------------------
If ComboBox1.ListIndex = 9 Then
If UCase(valorUF) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
Me.Lista.AddItem
Me.Lista.List(y, 0) = Hoja1.Cells(fila, 1).Value
Me.Lista.List(y, 1) = Hoja1.Cells(fila, 2).Value
Me.Lista.List(y, 2) = Hoja1.Cells(fila, 3).Value
Me.Lista.List(y, 3) = Hoja1.Cells(fila, 4).Value
Me.Lista.List(y, 4) = Hoja1.Cells(fila, 5).Value
Me.Lista.List(y, 5) = Hoja1.Cells(fila, 6).Value
Me.Lista.List(y, 6) = Hoja1.Cells(fila, 7).Value
Me.Lista.List(y, 7) = Hoja1.Cells(fila, 8).Value
Me.Lista.List(y, 8) = Hoja1.Cells(fila, 9).Value
Me.Lista.List(y, 9) = Hoja1.Cells(fila, 10).Value
y = y + 1
End If
End If
Next
End Sub
Private Sub UserForm_Activate()
Me.Lista.RowSource = "TablaPrincipal"
Me.Lista.ColumnCount = 10
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
'Get the List Object
Dim myList As ListObject
Set myList = Hoja1.ListObjects("TablaPrincipal") 'CHANGE "List1" TO MATCH YOUR TABLE'S NAME
'Get the Headers
Dim ListHeaders As Range
Set ListHeaders = myList.HeaderRowRange
'Create an empty Array
Dim Headers() As String
ReDim Headers(ListHeaders.Cells.Count - 1)
'Fill the Array
Dim i As Long
For i = 0 To ListHeaders.Cells.Count - 1
Headers(i) = ListHeaders.Cells(i + 1)
Next
'Put the Array into the ComboBox
Me.ComboBox1.List = Headers
End Sub
发布于 2022-03-11 19:38:33
这就是你想要的,我想:
Option Explicit
Private Sub ComboBox1_Change()
TextBox1.Enabled = ComboBox1.ListIndex <> -1
End Sub
'add a listobject datarow range to a listbox
Private Sub RowToList(rw As Range, lst As MSForms.ListBox)
Dim i As Long, r As Long
lst.AddItem
r = UBound(lst.List, 1)
For i = 1 To rw.Cells.Count
lst.List(r, i - 1) = rw.Cells(i)
Next i
End Sub
'this is the one place to edit the source listobject
Private Function SourceList() As ListObject
Set SourceList = Hoja1.ListObjects("TablaPrincipal")
End Function
'clear a listbox
Private Sub ClearList(lst As MSForms.ListBox)
If Len(lst.RowSource) > 0 Then
lst.RowSource = ""
Else
lst.Clear
End If
End Sub
Private Sub TextBox1_Change()
Dim rw As Range, v, lo As ListObject, i As Long
Dim colNum As Long
Set lo = SourceList
v = Me.TextBox1.Value
ClearList Me.Lista
If Len(v) > 0 Then 'any search term?
colNum = Me.ComboBox1.ListIndex + 1 'which column are we searching on?
v = "*" & lcase(v) & "*" 'convert to lower case for comparisons
For Each rw In lo.DataBodyRange.Rows
'convert list value to lower case for case-insensitive comparison
If LCase(rw.Cells(colNum).Value) Like v Then 'check the relevant column
RowToList rw, Me.Lista
End If
Next rw
Else
Me.Lista.RowSource = lo 'no search term: reload the whole table
End If
End Sub
Private Sub UserForm_Activate()
Me.Lista.RowSource = SourceList
Me.Lista.ColumnCount = SourceList.DataBodyRange.Columns.Count 'dynamic
End Sub
Private Sub UserForm_Initialize()
Dim myList As ListObject, ListHeaders As Range
Dim Headers() As String, i As Long
Set myList = SourceList
Set ListHeaders = myList.HeaderRowRange
ReDim Headers(ListHeaders.Cells.Count - 1)
For i = 0 To ListHeaders.Cells.Count - 1
Headers(i) = ListHeaders.Cells(i + 1)
Next
Me.ComboBox1.List = Headers
End Sub
https://stackoverflow.com/questions/71365447
复制相似问题