/// <summary>
        /// 指定したビットフラグが立っているか
        /// </summary>
        /// <param name="binaryData"></param>
        /// <param name="location"></param>
        /// <returns></returns>
        public static bool GetBitFlg(byte binaryData, int location)
        {
            string result = Convert.ToString(Convert.ToInt32(binaryData), 2).PadLeft(8, '0');

            return result.Substring(result.Length - location, 1) == "1" ? true : false;
        }

XE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )


metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=XE;USER ID=/"

metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="DATA SOURCE=XE;DBA PRIVILEGE=SYSDBA;USER ID=/"

'シートのデータを複数シートに反映
Private Sub 共通()
    Dim common_s As Worksheet
    Dim common_data As Variant
    Dim loop_colCnt As Integer
    Dim table_names As Object
    Dim loop_rowCnt As Integer
    Dim write_s As Worksheet
    Dim write_colData As Variant
    Dim loop_wCnt As Integer
    Dim loop_outCnt As Long
    Dim out_data() As String
    
    Set table_names = CreateObject("Scripting.Dictionary")
    Set common_s = ThisWorkbook.Sheets("共通")
    
    '★
    common_data = common_s.Range("D7:G9")
    
    common_data = common_data
    
    '列部分取得
    For loop_colCnt = LBound(common_data, 2) To UBound(common_data, 2)
        If common_data(1, loop_colCnt) <> "" Then
            table_names.Add loop_colCnt, common_data(1, loop_colCnt)
        End If
    Next loop_colCnt
    
    'メイン処理
    For loop_rowCnt = 2 To UBound(common_data)
        For loop_colCnt = 3 To UBound(common_data, 2)
            If common_data(loop_rowCnt, loop_colCnt) = "〇" Then
                Set write_s = ThisWorkbook.Worksheets(table_names(loop_colCnt))
                
                '★列数を取得、格納
                write_colData = write_s.Range("A2:B2")
                
                For loop_wCnt = LBound(write_colData, 2) To UBound(write_colData, 2)
                    '列名を比較
                    If write_colData(1, loop_wCnt) = common_data(loop_rowCnt, 1) Then
                        '★行数分一括でデータセット
                        For loop_outCnt = 0 To 0
                            ReDim Preserve out_data(loop_outCnt) As String
                            '値を取得
                            out_data(loop_outCnt) = common_data(loop_rowCnt, 2)
                        Next
                        '★
                        write_s.Range(write_s.Cells(3, loop_wCnt).Address & ":" & write_s.Cells(3, loop_wCnt).Address) = out_data
                    End If
                Next
            End If
        Next loop_colCnt
    Next loop_rowCnt
End Sub

=MID(E7,LEN("系統コード=[")+1,FIND("].往復区分=[",E7,1)-LEN("系統コード=[")-1)
=MID(E7,FIND("].往復区分=[",E7,1)+LEN("].往復区分=["),(FIND("].平日区分=[",E7,1)-(FIND("].往復区分=[",E7,1)+LEN("].往復区分=["))))
=MID(E7,FIND("].平日区分=[",E7,1)+LEN("].平日区分=["),(LEN(E7)-(FIND("].平日区分=[",E7,1)+LEN("].平日区分=["))))

Option Explicit

'データのフォーマットチェック
Public Enum CheckFormatPattern
    Character
    Time
    Date
    Numbers
    NumHanToZen
    NumZenToHan
End Enum

'処理機能毎のパターン
Public Type ShoriPattern
    title As String                                     '列名称
    Required As Boolean                                 '必須
    Digits As Integer                                   '桁数
    checkFormat() As CheckFormatPattern                 'フォーマットチェック
    Grant As Boolean                                    '付与(コーテーションを付けるか)
    OutputFormat As String                              '出力時フォーマット
End Type

'処理機能毎のパターンデータ
Public Type ShoriDataInfo
    ColumnsCount As Integer
    pattern() As ShoriPattern
End Type


Public Enum aaaCellInfo
    Number                                              '連番
    PhoneNumber                                         '電話番号
    UnkoDate                                            '運行日付
End Enum

Sub Sample2()
    Dim buf  As String
    Dim colInfo As ShoriDataInfo
    Dim testData As Variant
    Dim colCount As Integer
    Dim fmtCount As Integer
    testData = Array("1", "09012345678", "11:33")
    
    colInfo = GetShoriDataInfo("aaa")
    
    
    'check
    For colCount = 0 To colInfo.ColumnsCount
        
        'データが空文字かチェック
        If testData(colCount) = "" Then
            If colInfo.pattern(colCount).Required = True Then
                '★エラーメッセージ
                GoTo Continue
            Else
                '必須出ない場合でも、以降の判定処理は行わない
                GoTo Continue
            End If
        End If
        
        '★不要なダブルコーテーション、シングルコーテーション、空白を削除
        
        '桁数チェック
        If LenB(StrConv(testData(colCount), vbFromUnicode)) > colInfo.pattern(colCount).Digits Then
            '★エラーメッセージ
            GoTo Continue
        End If
        
        'フォーマットチェック
        For fmtCount = 0 To UBound(colInfo.pattern(colCount).checkFormat)
            Call checkFormat(CStr(testData(colCount)), colInfo.pattern(colCount), fmtCount)
        Next

        
        
        
        
Continue:
        Next
    
    
    
    
    
    
    
    
    
    
'    Open ThisWorkbook.Path & "\Sample.csv" For Input As #1
'    Do Until EOF(1)
'            Line Input #1, buf
'            ''読み込んだデータをセルに代入する
'    Loop
'    Close #1
End Sub


Public Function GetShoriDataInfo(shoriName As String) As ShoriDataInfo
    Dim name As String
    Dim shoriInfo As ShoriDataInfo
    Dim colCount As Integer
    
    Select Case shoriName
        Case "aaa"
            

            ReDim Preserve shoriInfo.pattern(colCount) As ShoriPattern
            shoriInfo.pattern(colCount).title = "連番"
            shoriInfo.pattern(colCount).Required = True
            shoriInfo.pattern(colCount).Digits = 10
            ReDim Preserve shoriInfo.pattern(colCount).checkFormat(0) As CheckFormatPattern
            shoriInfo.pattern(colCount).checkFormat(0) = CheckFormatPattern.NumZenToHan
            ReDim Preserve shoriInfo.pattern(colCount).checkFormat(1) As CheckFormatPattern
            shoriInfo.pattern(colCount).checkFormat(1) = CheckFormatPattern.Numbers
            shoriInfo.pattern(colCount).Grant = False
            shoriInfo.pattern(colCount).OutputFormat = ""
            
            colCount = colCount + 1

            ReDim Preserve shoriInfo.pattern(colCount) As ShoriPattern
            shoriInfo.pattern(colCount).title = "電話番号"
            shoriInfo.pattern(colCount).Required = False
            shoriInfo.pattern(colCount).Digits = 11
            ReDim Preserve shoriInfo.pattern(colCount).checkFormat(0) As CheckFormatPattern
            shoriInfo.pattern(colCount).checkFormat(0) = CheckFormatPattern.Numbers
            shoriInfo.pattern(colCount).Grant = False
            shoriInfo.pattern(colCount).OutputFormat = ""
            
            colCount = colCount + 1
            
            ReDim Preserve shoriInfo.pattern(colCount) As ShoriPattern
            shoriInfo.pattern(colCount).title = "運行日付"
            shoriInfo.pattern(colCount).Required = False
            shoriInfo.pattern(colCount).Digits = 10
            ReDim Preserve shoriInfo.pattern(colCount).checkFormat(0) As CheckFormatPattern
            shoriInfo.pattern(colCount).checkFormat(0) = CheckFormatPattern.Date
            shoriInfo.pattern(colCount).Grant = False
            shoriInfo.pattern(colCount).OutputFormat = "hh:nn"
            
            shoriInfo.ColumnsCount = colCount
    End Select


    GetShoriDataInfo = shoriInfo
End Function


Private Sub checkFormat(targetData As String, pattern As ShoriPattern, fmtCount As Integer)
    Dim numCount As Integer
    Dim numData As String
    Select Case pattern.checkFormat(fmtCount)
        Case CheckFormatPattern.NumHanToZen
            numData = StrConv(targetData, vbWide)
            
            For numCount = 1 To Len(numData)
                If Not Mid(numData, numCount, 1) Like "[0-9]" Then
                    'エラーメッセージ
                End If
            Next numCount
        Case CheckFormatPattern.NumZenToHan
            numData = StrConv(targetData, vbNarrow)
            
            For numCount = 1 To Len(numData)
                If Not Mid(numData, numCount, 1) Like "[0-9]" Then
                    'エラーメッセージ
                End If
            Next numCount
        Case CheckFormatPattern.Numbers
            numData = StrConv(targetData, vbNarrow)
            
            For numCount = 1 To Len(numData)
                If Not Mid(numData, numCount, 1) Like "[0-9]" Then
                    'エラーメッセージ
                End If
            Next numCount
        Case CheckFormatPattern.Date
            If IsDate(Format(CStr(targetData), pattern.OutputFormat)) = False Then
                'エラーメッセージ
            End If
    End Select
End Sub

Public Type KEITO
    ride_serialNum As Integer
    getoff_serialNum As Integer
    unchinData As Integer
End Type

Public Type UNCHIN
    sheetName As String
    keito_data() As KEITO
End Type

Public unchinData() As UNCHIN

Public Enum UnchinSheetColumn
    serialNum = 1
    keitoNum = 2
    seiriNum = 4
End Enum





Sub さんかくtest()
    Dim sankaku_s As Worksheet
    Dim sankakuRow_pos As Integer
    Dim sankakuCol_pos As Integer
    Dim seiri_cnt As Integer
    Dim loop_flg As Boolean
    Dim seiriLoop_flg As Boolean
    Dim genkin As Integer
    Dim sankakuData As Variant
    Dim nextRowCount As Integer
    Dim keito_data As Variant
    Dim loop_keitoCount As Long
    Dim row_pos As Long
    Dim col_po As Integer
    
    Dim lastColumnCount As Integer
    Dim lastRowCount As Long
    Dim KEITO() As String
    Dim loop_setKeitoCnt As Integer
    Dim unchin_flg As Boolean
    Dim dicSeiriColumnData As Object
    Dim loop_columnflg As Boolean
    Dim dicKeitoData As Object
    Dim loop_sankakuRowCnt As Long
    Dim keito_wk As String
    Dim keito_wkCnt As Integer
    Dim serial_number As Integer
    Dim seiri_number As Integer
    
    Dim ride_serialNum As Integer
    Dim ride_seiriNum As Integer
    
    
    
    Set dicSeiriColumnData = CreateObject("Scripting.Dictionary")
    Set dicKeitoData = CreateObject("Scripting.Dictionary")
    
    
    
    Set sankaku_s = ThisWorkbook.Worksheets("Sheet1")
        
    'intでいいかは確認
    Dim keto_cd As Integer
    seiri_cnt = -1
    loop_flg = True
    ofuku_flg = False
    
    'シートの最終行、最終列を取得
    lastRowCount = WorksheetFunction.Match("E", sankaku_s.Range("A:A"), 0) - 1
    lastColumnCount = WorksheetFunction.Match("E", sankaku_s.Range("3:3"), 0) - 1
    
    'コードは呼び出し時一意
'    keto_cd = keto_cd + 1
'    ReDim Preserve UnchinData(keto_cd) As Unchin
    
    '列データ取得
    sankakuData = sankaku_s.Range("$A$3:" & sankaku_s.Cells(lastRowCount, lastColumnCount).Address)
    
    row_pos = 1
    col_pos = UBound(sankakuData, 2)
    loop_columnflg = True
    While loop_columnflg = True
        If sankakuData(1, col_pos) <> "" Then
            dicSeiriColumnData.Add sankakuData(1, col_pos), col_pos
        Else
            loop_columnflg = False
        End If
        
        col_pos = col_pos - 1
    Wend


    '系統データを取得
    ReDim Preserve KEITO(0) As String
    sankakuData = sankaku_s.Range("$A$4:" & sankaku_s.Cells(lastRowCount, lastColumnCount).Address)
    For loop_keitoCount = 1 To UBound(sankakuData)
        If sankakuData(loop_keitoCount, 2) <> "" And dicKeitoData.exists(sankakuData(loop_keitoCount, 2)) = False Then
            ReDim Preserve KEITO(UBound(KEITO)) As String
            dicKeitoData.Add sankakuData(loop_keitoCount, 2), loop_keitoCount
            keito_wk = sankakuData(loop_keitoCount, 2)
        End If
        
        dicKeitoData(keito_wk) = loop_keitoCount
    Next
    
    ReDim Preserve unchinData(0) As UNCHIN
    ReDim Preserve unchinData(0).keito_data(0) As KEITO
    For loop_sankakuRowCnt = 1 To UBound(sankakuData)
        
        unchinData(UBound(unchinData)).sheetName = sankakuData(row_pos, 2)
        
        unchin_flg = True
        keito_wkCnt = dicKeitoData(sankakuData(row_pos, 2))
        unchin_flg = True
        
        While unchin_flg = True
            ride_seiriNum = sankakuData(row_pos, UnchinSheetColumn.seiriNum)
            ride_serialNum = sankakuData(row_pos, UnchinSheetColumn.serialNum)

            'ReDim Preserve UnchinData(UBound(UnchinData)).keito_data(UBound(UnchinData)) As KEITO

            loop_setKeitoCnt = 1
            While row_pos + loop_setKeitoCnt <= keito_wkCnt
                unchinData(UBound(unchinData)).keito_data(UBound(unchinData(UBound(unchinData)).keito_data)).getoff_serialNum = sankakuData(row_pos + loop_setKeitoCnt, UnchinSheetColumn.serialNum)
                unchinData(UBound(unchinData)).keito_data(UBound(unchinData(UBound(unchinData)).keito_data)).unchinData = sankakuData(row_pos + loop_setKeitoCnt, dicSeiriColumnData(ride_seiriNum))
                unchinData(UBound(unchinData)).keito_data(UBound(unchinData(UBound(unchinData)).keito_data)).ride_serialNum = ride_serialNum
                
                If row_pos + loop_setKeitoCnt + 1 <= keito_wkCnt Then
                    ReDim Preserve unchinData(UBound(unchinData)).keito_data(UBound(unchinData(UBound(unchinData)).keito_data) + 1) As KEITO
                End If
                
                loop_setKeitoCnt = loop_setKeitoCnt + 1
            Wend
            
            If row_pos >= keito_wkCnt Then
                unchin_flg = False
            End If
            row_pos = row_pos + 1
        Wend
        
        If dicKeitoData.Count > (UBound(unchinData) + 1) Then
            ReDim Preserve unchinData(UBound(unchinData) + 1) As UNCHIN
        End If
    Next
End Sub

HTMLTips

・border(線の一部を拡大してみた図)

f:id:oguri0220:20150523092646p:plain

 

・それぞれの配置

     border-top

border-leftf:id:oguri0220:20150523092646p:plainborder-right

 

・top,left,rightそれぞれの領域

f:id:oguri0220:20150523093450p:plain

・widthを減らすと、↑のwidthが0になる(つまり、□から▽になる)

 

・タグの意味

 Unorderd list 箇条書き
orderd list 
list  item

tr table row
th table header
td table data