ハイパーリンクから処理を分岐する

<分類:ハイパーリンク制御>
<使用例:ハイパーリンクがクリックされた座標によって処理を分岐する>
<注意:サンプルデータを作成するプログラムになっていますので、Sheet1は何もデータがないシートをご用意ください>
<プログラム例>

Sub 使用例()

    Worksheets("Sheet1").Hyperlinks.Add Anchor:=Cells(1, 1), _
                                        Address:=" ", SubAddress:=Worksheets("Sheet1").Name & "!A1", _
                                        TextToDisplay:=Worksheets("Sheet1").Name & "行1列1"
    Worksheets("Sheet1").Hyperlinks.Add Anchor:=Cells(2, 2), _
                                        Address:=" ", SubAddress:=Worksheets("Sheet1").Name & "!B2", _
                                        TextToDisplay:=Worksheets("Sheet1").Name & "行2列2"
    Worksheets("Sheet1").Hyperlinks.Add Anchor:=Cells(3, 3), _
                                        Address:=" ", SubAddress:=Worksheets("Sheet1").Name & "!C3", _
                                        TextToDisplay:=Worksheets("Sheet1").Name & "行3列3"

End Sub

'貼り付け場所注意:VBAProjectのMicrosoft Excel ObjectのThisWorkbookに記述
Private Sub Workbook_SheetFollowHyperlink(ByVal sh As Object, ByVal Target As Hyperlink)

  Select Case left(Target.Name,6)
         Case "Sheet1"
             Select Case ActiveCell.Row & "," & ActiveCell.Column
   
                    Case 1 & "," & 1
                         MsgBox "行1列1の処理"
                         MsgBox ActiveCell.Column
                         MsgBox ActiveCell.Row
                         MsgBox ActiveCell.Address
         
                    Case 2 & "," & 2
                         MsgBox "行2列2の処理"
                         MsgBox ActiveCell.Column
                         MsgBox ActiveCell.Row
                         MsgBox ActiveCell.Address
              
                    Case 3 & "," & 3
                         MsgBox "行3列3の処理"
                         MsgBox ActiveCell.Column
                         MsgBox ActiveCell.Row
                         MsgBox ActiveCell.Address
             End Select
             
         Case Else
  End Select
  
End Sub

カラムindex値(x座標)をExcelレンジのX部分(アルファベット部分)に変換する

<分類:値変換>
<使用例:カラムindex値(x座標)をExcelレンジのX部分(アルファベット部分)に変換する>
<プログラム例>

Sub 使用例()
   Dim x As Long
   Dim s As String

  'x座標28はレンジのx部分はAB
   x = 28
   
   s = 共通_カラムindexをレンジX部分に変換(x)

   MsgBox ("レンジx座表部分は" & s & "です")

End Sub

Function 共通_カラムindexをレンジX部分に変換(p1)
   Dim s As String
   
   s = Cells(1, p1).Address
   s = Replace(s, "1", "")
   s = Replace(s, "$", "")
   共通_カラムindexをレンジX部分に変換 = s
   
End Function

MySQLデータベースと接続してExcelのSheet1の内容をテーブルにINSERTする

<分類:データベース>
<使用例:MySQLデータベースと接続してExcelのSheet1の内容をテーブルにINSERTする>
MySQLのサンプルデータベースの構成 ※予め作成しておく>
<データベース:dbtest1>
<テーブル:testtbl1>
<テーブルのフィールド:no_id(int型)とnaiyo(varchar型)>

<プログラム例>

Sub Mysql接続INSERT()
    Dim y As Long
    Dim strSQL As String
    
    Dim strField1 As Long
    Dim strField2 As String
    
    Dim adoCn As Object
    Dim adoRs As Object
    
    Set adoCn = CreateObject("ADODB.Connection")
    Set adoRs = CreateObject("ADODB.Recordset")
    
   'SERVER=ローカルの場合localhost
   'DATABASE= useするデータベース名
   'USER= MySQLの管理ユーザ名
   'password= MySQLで設定したパスワード
    adoCn.Open "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
               "SERVER=localhost;" & _
               "DATABASE=dbtest1;" & _
               "USER=root;" & _
               "password=xxxxxxxx;"
    
    y = 2
    Do While Worksheets("sheet1").Cells(y, 1)
      'Sheet1の2行目から1カラム目のNO_IDと2カラム目のNAIYOをtesttbl1にINSERTする
       strField1 = Worksheets("sheet1").Cells(y, 1)
       strField2 = Worksheets("sheet1").Cells(y, 2)
       strSQL = "INSERT INTO testtbl1 (NO_ID,NAIYO) VALUES(" & strField1 & ",'" & strField2 & "');"
       Set adoRs = adoCn.Execute(strSQL)
       y = y + 1
    Loop
    
    adoCn.Close
    
    Set adoRs = Nothing
    Set adoCn = Nothing
    
End Sub