Skip to content

Instantly share code, notes, and snippets.

@YujiFukami
Created January 16, 2025 03:17
Show Gist options
  • Save YujiFukami/fd11e396b898ee1adb76c8dc40908894 to your computer and use it in GitHub Desktop.
Save YujiFukami/fd11e396b898ee1adb76c8dc40908894 to your computer and use it in GitHub Desktop.
'SSA ・・・元場所:IkiAddin.ModArray
'GetDimensionArray・・・元場所:IkiAddin.ModArray
'ShowSheetArray1D ・・・元場所:IkiAddin.ModArray
'ShowSheetArray2D ・・・元場所:IkiAddin.ModArray
Public Sub SSA(Array_ As Variant)
'配列の中身をシート上に表示して確認する
'表示するシートは新規ブックとして作成する
'20250106
'引数
'Array_・・・表示対象の配列
Dim Dimension As Long: Dimension = GetDimensionArray(Array_)
Select Case True
Case Dimension = 1
Call ShowSheetArray1D(Array_)
Case Dimension = 2
Call ShowSheetArray2D(Array_)
Case Else
'イミディエイトウィンドウで警告表示(MsgBoxだと気づかないから)
Call Beep '音を鳴らす
Debug.Print "一次元配列か二次元配列を入力してください"
End Select
End Sub
Private Function GetDimensionArray(ByRef Array_ As Variant)
'配列の次元数を返す
'配列でない場合は0を返す
'引数
'Array_・・・配列
'処理
Dim Output As Long
Dim Tmp As Variant
Dim K As Long
If VarType(Array_) < vbArray Then
'配列でない場合
Output = 0
Else
K = 0
On Error Resume Next
Do
K = K + 1
Tmp = 0
Tmp = UBound(Array_, K) 'K次元要素数が存在しないならエラーとなる
If Tmp = 0 Then
'エラーならTmpがEmptyなのでK-1が次元で確定
Output = K - 1
Exit Do
End If
Loop
On Error GoTo 0
End If
'出力
GetDimensionArray = Output
End Function
Private Sub ShowSheetArray1D(Array1D As Variant)
'一次元配列の中身をシート上に表示して確認する
'表示するシートは新規ブックとして作成する
'20250106
'引数
'Array1D・・・表示対象の一次元配列
'新規ブック作成
Dim Book As Workbook: Set Book = Application.Workbooks.Add
'新規ブックの最初のシートに二次元配列を出力
Dim Sheet As Worksheet: Set Sheet = Book.Worksheets(1)
Dim N As Long: N = UBound(Array1D, 1)
Sheet.Range("A1").Resize(N, 1).Value = WorksheetFunction.Transpose(Array1D)
'列幅調整、行高さ調整
Sheet.Cells.EntireColumn.AutoFit
Sheet.Cells.EntireRow.AutoFit
'二次元配列の範囲だけ表示
Sheet.Cells.EntireColumn.Hidden = True
Sheet.Range("A1").Resize(N, 1).EntireColumn.Hidden = False
Sheet.Cells.EntireRow.Hidden = True
Sheet.Range("A1").Resize(N, 1).EntireRow.Hidden = False
'一番左上を表示
Sheet.Range("A1").Select
End Sub
Private Sub ShowSheetArray2D(Array2D As Variant)
'二次元配列の中身をシート上に表示して確認する
'表示するシートは新規ブックとして作成する
'20250106
'引数
'Array2D・・・表示対象の二次元配列
'新規ブック作成
Dim Book As Workbook: Set Book = Application.Workbooks.Add
'新規ブックの最初のシートに二次元配列を出力
Dim Sheet As Worksheet: Set Sheet = Book.Worksheets(1)
Dim N As Long: N = UBound(Array2D, 1)
Dim M As Long: M = UBound(Array2D, 2)
Sheet.Range("A1").Resize(N, M).Value = Array2D
'列幅調整、行高さ調整
Sheet.Cells.EntireColumn.AutoFit
Sheet.Cells.EntireRow.AutoFit
'二次元配列の範囲だけ表示
Sheet.Cells.EntireColumn.Hidden = True
Sheet.Range("A1").Resize(N, M).EntireColumn.Hidden = False
Sheet.Cells.EntireRow.Hidden = True
Sheet.Range("A1").Resize(N, M).EntireRow.Hidden = False
'一番左上を表示
Sheet.Range("A1").Select
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment