MicroStation VBA基礎

来源:http://www.cnblogs.com/zpfbuaa/archive/2016/08/08/5748896.html
-Advertisement-
Play Games

實習筆記1 2016年8月1日 14:12 Option Explicit 預設情況下,如果使用一個沒有聲明的變數,它將繼承“Variant”類型。在模塊、窗體和類的通用聲明區使用“OptionExplicit”能強制我們必須聲明變數後才能使用變數 Sample: 在通用聲明區聲明瞭“Option ...


實習筆記1

2016年8月1日

14:12

Option Explicit

預設情況下,如果使用一個沒有聲明的變數,它將繼承“Variant”類型。在模塊、窗體和類的通用聲明區使用“OptionExplicit”能強制我們必須聲明變數後才能使用變數

Sample:

Option Explicit

Sub test()

X = 5

End Sub

 

在通用聲明區聲明瞭“Option Explicit”。當試著去運行上述test巨集時將得到一個錯誤

本章回顧

1.在過程、函數或用戶窗體事件中寫代碼

2.在過程和函數中利用必須的和可選的參數

3.函數可返回值、數組、類型和對象

4.在過程和函數中,如果參數聲明為“ByRef”,則可以改變作為參數傳遞進來的變數。把參數聲明為“ByVal”將保持變數不變

4.能在過程、函數和事件中或者在通用聲明區內聲明變數。這些變數的範圍依賴於它們在何處被聲明以及聲明中所用的關鍵字

第六章 變數

Option Explicit

Sub tst()

TTT = 5

MsgBox TTT

End Sub

'整型

Dim PageNumber As Integer

PageNumber = 84

'長整型

Dim MySalary As Long

MySalary = 123456

'雙精度型

Dim HourToLearnVBA As Double

HourToLearnVBA = 36.25

Sub VariableTestC()

Dim N As Double

N = 1.23456789012346

N = 12345678901234.6

End Sub

'布爾類型

Dim ICanLearnThis As Boolean

ICanLearnThis = True

'日期型

Dim XMReleaseDate As Date

XMReleaseDate = "5/19/2006 8:00:00 AM"

'字元型

Dim MYLevelName As String

MYLevelName = "utilElectricity"

'對象型

Dim MyExcelApp As Object

Set MyExcelApp = GetObject(, "Excel.Application")

'Variant

Dim PointArray As Variant

'MicroStation特有的變數類型

'Application(應用)

Dim MSAPP As Application

Set MSAPP = Application

'ActiveDesignFile當前設計文件

'ActiveModelReference當前模型參考

'ActiveSettings 當前設置

'VBProject object & attributes 對象以及屬性

'UserName用戶名

'取得左、頂、寬和高屬性

'DesignFile設計文件

Dim MyDGN As DesignFile

Set MyDGN = Application.ActiveDesignFile

'Author 作者,Client客戶,Comments註釋,Company公司,KeyWords關鍵字,Manager管理者,Subject主題,Title標題

'FormatMajorVersion 格式主版本 FormatMinorVersion格式次版本

'Levels層, Models模型, Name 名稱,Path 路徑

'ModelReference 模型參考

Dim MyModel As ModelReference

Set MyModel = Application.ActiveModelReference

'Level 層

Dim MyLevel As Level

Set MyLevel = Application.ActiveDesignFile.Levels(1)

'Description 描述, ElementColor元素顏色,ElementLineStyle元素線性,ElementLineWeight元素線寬,IsActive是否激活,IsDisplayed是否顯示

'IsFrozen是否凍結,IsLocked是否鎖定,Name名字,Number層號,Plot光柵繪圖

'LineElement線元素

Dim MyLine As Application

Set MyLine = Application.CreateLineElement2(Nothing, Point3dFromXYZ(0, 0, 0), Point3dFromXYZ(4, 5, 6))

Application.ActiveModelReference.AddElement MyLine

'EllipseElement橢圓元素

Dim MyCircle As EllipseElement

Dim RotMatrix As Matrix3d

Set MyCircle = CreateEllipseElement2(Nothing, Point3dFromXYZ(0, 0, 0), 1.5, 1.5, RotMatrix)

Application.ActiveModelReference.AddElement MyCircle

'ArcElement 弧元素

Dim MyArc As ArcElement

Dim RotMatrix As Matrix3d

Set MyArc = CreateArcElement2(Nothing, Point3dFromXYZ(0, 0, 0), 1.75, 1.75, RotMatrix, Radians(45), Radiands(90))

Application.ActiveModelReference.AddElement MyArc

'TextElement文本元素

Dim MyText As TextElement

Dim RotMatrix As Matrix3d

Set MyText = CreateTextElement1(Nothing, "MicroStation VBA", Point3dFromXYZ(0, 0, 0), RotMatrix)

Application.ActiveModelReference.AddElement MyText

'賦值和設置對象

Dim LevelName As String

LevelName = "Element"

Dim EasementLevel As Level

Set EasementLevel = ActiveDesignFile.AddNewLevel(LevelName)

Dim StartPoint(0 To 2) As Double

StartPoint(0) = 4.5

StartPoint(1) = 5.6

StartPoint(2) = 6.7

Sub ArrayTestA()

Dim MyVerticies(0 To 1) As Point3d

Dim MyLine As LineElement

MyVerticies(0).X = 1

MyVerticies(0).Y = 2

MyVerticies(1).X = 3

MyVerticies(1).Y = 4

MyVerticies(2).X = 5

MyVerticies(2).Y = 6

Set MyLine = CreateLineElement1(Nothing, MyVerticies)

ActiveModelReference.AddElement MyLine

End Sub

Sub VariableTestD()

Dim MySalary As Double

Dim MySalary As Double

MySalary = 1234567

MyHourly = MySalary / 52 / 40

MsgBox "My Hourly Rate is " & FormatCurrency(MyHourly, 2, vbFalse, vbFalse, vbTrue)

End Sub

 

本章回顧:

變數是保存值或指向對象的名字。在函數、過程或事件內聲明的變數是局部的,僅能在聲明它的函數中使用,不能在函數外使用。在窗體或代碼模塊通用聲明區中聲明的變數能在聲明它們的窗體或代碼模塊內任何地方使用。在代碼模塊中聲明為“Public”的變數能在VBA工程的任何位置使用,在類模塊中聲明為“public”的變數成為類模塊的讀/寫屬性

如果沒有變數,一切將是靜態的什麼也不能代表——線總是從固定的一點畫到固定的另一點,文本總是插入在同一點且內容總是相同的。

第七章 操作文本

UCase大寫轉換

Function Ucase(String)

LCase小寫轉換

Function Lcase(String)

StrConv字元串轉換

Function StrConv(String, Conversion As VbStrConv, [LocaleID AS Long])

WeekDayName星期名 WeekDay日期轉星期

Function WeekDayName(Weekday As Long ,[Abbreviate As Boolean = False],[FirstDayOffWeek As VbDayOfWeek = vbUseSystemDayOfWeek]) As String

MonthNAme月名

Function MonthName(Month As Long, [Abbreviate As Boolean = False]) As String

LTrim左截取 RTrim右截取 Trim兩端截取

Function LTrim(String)

Function RTrim(String)

Function Trim(String)

StrComp字元串比較

Function StrComp(String1, String2, [Compare As VbCompareMethod = vbBinaryCompare]

Left左取字元串

Function Left(String ,Length As Long)

Right右取字元串

Function Right(String, Length As Long)

Mid 取中串

Function Mid(String, Start As Long, [Length])

Sub TextWork12()

Dim BookTitle As String

BookTitle = "Learning MicroStation VBA"

Debug.Print Mid(BookTitle, 3, 6)

Debug.Print Mid(BookTitle, 6)

Debug.Print Mid(BookTitle, InStr(1, BookTitle, " ") + 1)

End Sub

 

'註意上面的InStr裡面的" "裡面是有一個空格

運行結果:

arning

ing MicroStation VBA

MicroStation VBA

第一個是從第三個字元開始並返回六個字元

第二個是從第六個字元開始並返回其後的每個字元

第三個是以Instr函數在變數BookTitle中查找第一個空格的位置並加上“1”作為起始,這樣實際上是從第一個空格後開始的。如果沒有指定長度,將得到空格後的所有內容

Replace 替換字元

Function Replace(Expression As String, Find As StringReplace As String, [Start As Long = 1],[Count As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare])AS String

Sub TextWork13()

Dim FilePath As String

Dim FilePath2 As String

FilePath = Application.ActiveDesignFile.FullName

FilePath2 = Replace(FilePath, "\", "//")

MsgBox FilePath & "turns into" & vbCr & FilePath2

End Sub

InStr 子串位置

Function InStr([Start],[String1],[String2],[Compare As VbCompareMethod = vbBinaryCompare])

InStrRev反向子串位置

Function InStrRev(StringCheck As String, StringMatch As String, [Start As Long = -1],[Compare As VbCompareMethod = vbBinaryCompare]) As Long

Split 分割和 Join聯結

Function Split(Expression As String,[Delimiter],[Limit As Long = -1],[Compare As VbCompareMethod = vbBinaryCompare])

Function Join(SourceArray,[Delimiter]) As String

Asc 字元到ASCII碼 和Chr ASCII碼到字元

Function Asc(Stirng As String) As Integer

Function Chr(CharCode As Long)

FormatCurrency格式化貨幣

Function FormatCurrency(Expression, [NumDigitaAfterDecimal As Long = -1],[IncludeLeadingDigit As VbTriState = vbUseDefault],[GroupDigits As VbTriState = vbUseDefault])As String

FormatNumber格式化數字

Function FormatNumber(Expression,[NumDigitsAfterDecimal As Long =-1],[IncludeLeadingDigit As VbTriState = vbUseDefault],[UseParensForNegativenumbers As VbTriState = vbUseDefault],[GroupDigits As VbTriState = vbUseDefault]) As String

FormatDateTime格式化日期

Funcion FormatDateTime(Expression,[NamedFormat As VbDateTimeFormat = vbGeneralDate]) As String

Format格式化

Function Format(Expression, [Format],[FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear As VbFirstWeekOfYear = vbSunday],[FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1])

 

&連接符

用來連接字元串

VbCr回車符<Enter>鍵

VbTab製表符<Tab>鍵

本章回顧:

字元串是指由文本、字母、數字和其他字元組合的單個文本塊。本章集中講述瞭如何操作這些字元串,例如大寫轉化,小寫轉化。連接字元串,格式化字元串,分割字元串等操作

<F8>可以單步

第8章 操作數字

加、減、乘、除、平方與指數(^2 或者^n)、平方根Sqr


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文件壓縮、解壓 網路、進程 磁碟、文件使用情況 記憶體使用 1、文件壓縮、解壓 1)tar.gz文件解壓: 2)zip 文件解壓: 2、網路、進程 1)netstat 在Linux上通常使用的是: netstat –apn | grep pid 在Windows上,對應的命令是:netstat –an ...
  • 一、本實驗ADC 配置 解析度:10 位。 輸入通道:5,即使用輸入通道AIN5 檢測電位器的電壓。 ADC 基準電壓:1.2V。 二、NRF51822 ADC 管腳分佈 NRF51822 的ADC 共有8 個輸入通道,對應的管腳分佈入下圖: 三、NRF51822 ADC 原理 NRF51822 的 ...
  • (1)當vim打開一個文件的時候,可以使用 (2)對當前文件寫入: 按鍵i ,左下角會顯示insert單詞,代表可以進行文本的插入; (3)滑鼠上下左右的移動: 上:K ↑ 下:j ↓ 左:H ← 右:L → (4)換行及刪除 換行寫入: o 刪除一行 : dd 返回 u (5)保存及退出 ESC ...
  • 附帶東野圭吾小說集(txt文件)http://pan.baidu.com/s/1slMSFxj 類模塊有多種用途,主要用於以下幾個方面: 1.封裝相似功能到單個對象中 2.建立帶有屬性、方法和事件的對象 3.特為自定義集合建立類模塊 封裝相似功能: 以一個名為clsUStationDialog的類開 ...
  • 前一篇分析了前十個基礎實驗的代碼,從這裡開始分析後十個~ 一、PPI原理: PPI(Programmable Peripheral Interconnect),中文翻譯為可編程外設互連。 在nRF51822 內部設置了PPI 方式,可以通過任務和事件讓不同外設之間進行互連,而不需要CPU 進行參與。 ...
  • nginx代理啟動 /usr/local/nginx/sbin/nginx apache2.2 service httpd restart【重啟apache服務】vi /etc/sysconfig/iptables【防火牆配置】service iptables restart【重啟防火牆服務】 vi ...
  • 實驗01 - GPIO輸出控制LED 引腳輸出配置:nrf_gpio_cfg_output(LED_1); 引腳輸出置高:nrf_gpio_pin_set(LED_1); 引腳電平轉換:nrf_gpio_pin_toggle(LED_1); 毫秒延時:nrf_delay_ms(100); 實驗02 ...
  • ---------------------現在windows下的命令提示符只是一個軟體,操作方式和界面模擬dos操作系統 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...