2017-05-15 71 views
-2

是否有一個插件可以幫助在excel中生成字母(A-Z),如下所示?或者我們可以寫一些VBA腳本來做到這一點?excel中的繪圖字母

enter image description here

+2

這是不完全清楚你要求的。你似乎想要某種通過染色細胞而獲得的文字藝術。沒有插件,我知道哪些可以做到這一點(無論如何,要求外部資源是堆棧溢出的主題)。你可以清楚地寫一個VBA宏來做到這一點。根據你想要做的事情,這不會特別困難。 –

+0

re:'* can **我們**寫一些VBA腳本來做這個*' - 好吧,*我*可以;我不確定你,因爲你的問題沒有代碼。 – Jeeped

+0

最簡單的方法是找到在低分辨率LED顯示屏中使用的開放源碼型字體。您應該能夠找到一個文件,例如包含字母表上每個字母的16x12 0-1值矩陣。一旦你將它們讀入VBA中 - 將它們推送到Excel範圍(可能爲0和1),並讓其他條件格式化。 –

回答

1

#2是不是代碼爲我服務。總之,這個任務看起來有趣,我決定編寫一些事情:

Option Explicit 

Public Sub WriteLetterA() 

    Dim varLetterA(8)  As Variant 
    Dim lngColCounter  As Long 
    Dim lngRowCounter  As Long 
    Dim blnReverse   As Boolean 
    Dim rngCell    As Range 

    blnReverse = True 

    varLetterA(0) = Array(1, 1, 1, 0, 0, 1, 1, 1) 
    varLetterA(1) = Array(1, 0, 0, 0, 0, 0, 0, 1) 
    varLetterA(2) = Array(1, 0, 0, 1, 1, 0, 0, 1) 
    varLetterA(3) = Array(1, 0, 0, 1, 1, 0, 0, 1) 
    varLetterA(4) = Array(0, 0, 0, 1, 1, 0, 0, 0) 
    varLetterA(5) = Array(0, 0, 0, 0, 0, 0, 0, 0) 
    varLetterA(6) = Array(0, 0, 0, 0, 0, 0, 0, 0) 
    varLetterA(7) = Array(0, 0, 1, 1, 1, 1, 0, 0) 
    varLetterA(8) = Array(0, 0, 1, 1, 1, 1, 0, 0) 

    Cells(1, 1).Select 

    For lngRowCounter = 0 To UBound(varLetterA) 
     For lngColCounter = 0 To UBound(varLetterA(lngRowCounter)) 
      Set rngCell = Cells(lngRowCounter + 1, lngColCounter + 1) 
      If varLetterA(lngRowCounter)(lngColCounter) Then 
       rngCell.Interior.Color = IIf(blnReverse, vbBlack, vbWhite) 
      Else 
       rngCell.Interior.Color = IIf(blnReverse, vbWhite, vbBlack) 
      End If 
     Next lngColCounter 
    Next lngRowCounter 

End Sub 

' Points for improvement - varLetterA in a separate class 
' Refer to the sheet, do not assume it 
' Pass the first cell as a reference 

這是你會得到什麼:

blnReverse = False

enter image description here

blnReverse = True

enter image description here

看看改進點 - 如果您決定構建字母表的其餘部分,它們可能很有用。祝你好運。

+1

「Stackoverflow不是一個代碼對我的服務,無論如何,這個任務看起來很有趣,而且我決定對它進行編碼」 - 我已經不止一次地感受到了同樣的方式。 'blnReverse'參數是個好主意。 +1 –

+0

Thanks @JohnColeman - 出現了'blnReverse',因爲我忘記了'varLetterA'中的'0'和'1',我認爲這樣會更容易:) – Vityata