我是一名建築師,並在其中有許多房間的工作表。我製作了一個基本的搜索引擎,您可以在其中編寫房間的特定代碼,其餘規範中有關該特定房間的其他內容將按順序顯示。我要添加的是在搜索框上加號和減號可以尋找下一個和以前的代碼。你能幫我麼? 現在已經感謝您的回覆:)Excel - 需要學習如何製作它?
注意:我沒有Macro的知識。如果你要解釋,請記住,你是向新手解釋它,所以假設我甚至不知道如何開始啓動它:)
我是一名建築師,並在其中有許多房間的工作表。我製作了一個基本的搜索引擎,您可以在其中編寫房間的特定代碼,其餘規範中有關該特定房間的其他內容將按順序顯示。我要添加的是在搜索框上加號和減號可以尋找下一個和以前的代碼。你能幫我麼? 現在已經感謝您的回覆:)Excel - 需要學習如何製作它?
注意:我沒有Macro的知識。如果你要解釋,請記住,你是向新手解釋它,所以假設我甚至不知道如何開始啓動它:)
首先,寫一個宏,你必須啓用「開發」功能在你的excel版本上。
二千零十三分之二千零十:https://msdn.microsoft.com/en-us/library/bb608625.aspx
,你現在有一個額外的窗格中, 「開發」 中,你會發現像重要的東西: 「Visual Basic中」, 「宏」,
插入按鈕允許您在Excel表格中選擇一個按鈕或類似按鈕。這樣做的時候,當按下按鈕時,系統會提示您分配一個宏來運行。
即使該宏還不存在,您可以通過在該對話框中爲其編寫一個奇特的名稱並單擊「新建」來創建它。 這將在新窗口中打開代碼編輯器。
點擊「Visual Basic」也會打開代碼編輯器。 (如果您不小心關閉它)
在代碼編輯器窗口的左側,您會看到一個帶有表單屬性的「樹」。要正確的應該是一個文本,如:
Sub theNameYouChoseForTheMacro()
End Sub
如果沒有,那麼你將要雙擊「的ThisWorkbook」真正開始編輯代碼。
單擊文本,在「()」和「結束」之間的行中。
這就是我們要添加按鈕代碼的地方。
現在取決於如何製作搜索引擎,代碼需要相應地編寫。以下假定它是工作簿中的單元格。
首先,我們通過讀取所述搜索單元中的現有值,並將其存儲在與該尺寸整型變量開始時(假設您的代碼的整數) 通知該小區是由它的位置在所選的片
Dim myVariable
myVariable = Worksheets("Sheet1").Range("A1").Value
然後我們要加上或減去一個值,在這個例子中,我們添加一個值:
myVariable = myVariable + 1
,並把它寫回細胞,重新做了Excel中實現搜索..
Worksheets("Sheet1").Range("A1").Value = myVariable
的情況下,你用實現一個插件,或VBA代碼搜索從什麼地方,你將需要激活以某種方式搜索。
完整的例子的代碼:
Sub theNameYouChoseForTheMacro()
Dim myVariable As Integer
myVariable = Worksheets("Sheet1").Range("A1").Value
myVariable = myVariable + 1
Worksheets("Sheet1").Range("A2").Value = myVariable
End Sub
交評論編輯:
據我爲了通過1個MYVARIABLE + 1被定義爲提高值觀察該特定單元格的下一個(雙擊之後)值。
Ehmnnn,不知道我的正確解讀這些文字,但.. 是的,我們只需添加一個變量的值,然後把它寫回的信元進行時。這不是當你雙擊時,它是當你離開按鈕時。或者運行從編輯宏(點擊播放圖標,然後選擇theNameYouChoseForTheMacro
但我的房間代碼是由文字和數字的組合(例如:B2-021意味着樓地下室2 - 房間21) 。而這些代碼並不總是爲了以穩定的方式
確定..這改變的事情..
如果你想獲得下一個代碼,我們需要的代碼提取的所有描述可能的代碼代碼爲 代碼如何相關te到Excel表格中的房間數據?
在未來的版本我假設你有一個房間每行,在不同的工作表「Sheet2的」,而且房間代碼可以在coloumn一個在Sheet2中
首先可以看出,我們需要知道的是,搜索代碼是一個字符串,而不是一個整數:
Dim myVariable As String
myVariable = Worksheets("Sheet1").Range("A1").Value
,我們要確定它坐落在Sheet2中,爲了這個,我使用的功能,在從http://www.rondebruin.nl/win/s9/win006.htm
Function Find_First(FindString As String, Optional Col As Boolean)
Dim Rng As Range
If Trim(FindString) <> "" Then
With Sheets("Sheet2").Range("A:A")
Set Rng = .Find(What:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
If Col Then
Find_First = Rng.Column
Else
Find_First = Rng.Row
End If
Else
MsgBox "Nothing found"
Find_First = Nothing
End If
End With
End If
End Function
被盜宏找到了子修改
這爲我提供了Sheet2中找到的字符串的顏色和行號。 所以我們採取的行數,加上或減去一個 這一次,我們從細胞在列和行的索引值更改:
Sub Button1_Click()
Dim myVariable As String
Dim Coloumn As Integer
Dim Row As Integer
myVariable = Worksheets("Sheet1").Range("A1").Value
Coloumn = Find_First(myVariable, True)
Row = Find_First(myVariable) + 1
Worksheets("Sheet1").Range("A1").Value = Worksheets("Sheet2").Cells(Row, Coloumn)
End Sub
首先感謝您對這個問題的回覆和關於亨裏克問題的詳細解釋:)我安靜地聽取了您的宏文本中的內容,並將其調整爲我的內容。據我所知,爲了將值提高1,myvariable + 1被定義爲特定單元格的下一個(雙擊之後)值。但我的房間代碼由文本和數字組合組成(例如:B2-021代表地下室2 - 房間21)。並且這些代碼並不總是以穩定的方式上升。 –
在這種情況下,我應該將myvariable定義爲特定的單元格,並且在下一輪中,我應該聲明,如果我的變量是A1,它應該將它視爲A2,以便它總是檢查下一個。而對於減號宏我應該說相反 –
-1 反對 接受 WOW :)當然它的一種心靈在這個階段爲我吹,但是我會嘗試理解內部的邏輯。只有可能不安靜適合我的工作表的東西可以是列和行索引,但我只是需要它來從某個顏色獲取信息。如果它與你共享,我可以分享.xls,以便你可以擁有更好的外觀。我會記下它來描述所需的過程。雖然我是新的堆棧溢出,可以與其他用戶共享.xls嗎? 再次感謝你亨利克,努力教我一些宏,並解決我的問題:) –
請您能不能告訴你有什麼這麼遠嗎?截圖會很有幫助。 –