Excel VBAを始めるには(004)

ExcelVBAを学ぶ上で様々な特徴がある。
特筆すべきは、値の表示や受け取りが、「セル」で可能な点であろう。

プログラム言語のみでは、この値の表示や受け取りを実用化するには、
そのためのインターフェース(I/F)を構築せねばならず、テストはOKでも、簡単な
実用プログラムを作成するにも作成が必要となる。
無論、LIBが多数出ているが、今度はそのLIBを知らねばならず意外に迷う。

Excelは使い慣れたI/Fがあり、値はこことのやり取りで完結する。

Vega_n= Range("A1")
とすれば、A1の値は変数に代入することが出来る。

同様に、
Range("A1") = Vega_c
もOK
Sheetを指定することで、他のSheetでも当然、操作が可能となる。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

各務原遺産の森トレッキング(2022.11.03)

各務原遺産の森トレッキング(2...
やっと、いままでのコースを歩くようになりました。
今年の1月にスキーで転倒し、数カ月は山にも行けずでした。
4月に歩きはじめましたが、数百mで背中がパンパンに。
その後、姿勢がおかしいのか、右足首が腫れ、また中断。
暑さと、コロナなどで9月にやっと再開、体を慣らしてやっとです。

加齢ゆえか、回復が遅いのですが、少しづつ良くなった来るのを体感しています。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya


#トレッキング
#trekking
#kuma

People Who Wowed This Post

今日の夜明け前2(2022.11.03)

今日の夜明け前2(2022.1...
今日の夜明け前。文化の日、快晴です。
これからお山に・・・・・


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#LX100M2
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#トレッキング
#trekking
#kuma

People Who Wowed This Post

Excel VBAを始めるには(003)

今回は初心者が一番躓く変数
VBAにかぎらずプログラムには、変数と定数があるが、まずは変数
https://excel-ubara.com/excelvba1/EXCELVBA312.html
これが参考になる、まずは読むこと。

VBAでは、この変数を使うにあたり、変数宣言の必要がある、この宣言だけでは
無いも起こらない。変数の宣言は無用と初心者用には書かれている場合もあるが、
本当に勉強するなら、まずこの変数宣言と形を理解する必要がある。

変数には文字変数と数値変数がある、いわゆる入れ物の違い。
Excelのセルの定義は少し異なる、変数はデータによって変わるVALIANT型もあるが
初心者の場合は、きっちり定義すべき。

この変数はVBAの基本をなす重要な部分であるから、おろそかにしてはならない。

次に重要な値の代入について記す。
変数には値を代入することで、その変数を使うことが出来る。
変数 Vega_nを定義する
Dim Vega_n as Long
Vega_n = 88

これで変数Vega_nには数値の88が入った、この変数を左、それに=で88を書くことで
代入したことになる、これを左辺代入と呼び、VBAの基本。
※Vega_nは88に等しいのではない

※変数に_nをつけるのはVegaSystemsのルール、数値型には_n、文字型には
_cを付けることで、文字型、数値型の区別が容易になる。VBAの決まりではない。

変数はわかりやすい表記をすること、AとかBなど、一文字は使わない。
※特例があるが、それは後で解説する。

https://www.tipsfound.com/vba/01004


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

Excel VBAを始めるには(002)

VBAのスタートはMSGBOXから始める。

MSGBOXは画面中央にメッセージを表示させる機能がデフォルト。
これに、値を設定することで、YES/NOの選択が可能となる。
ただし、この値によって条件分岐をするには、それなりの構文を理解せねば
ならない。
まずは、MSGBOX文を挿入し、その状況を確認すること。

これと同じ構文構造のINPUTBOXがある、これは値を入力することが出来るが、
MSGBOXより値の扱いをマスターせねばならない。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

雨上がりの朝(2022.11.02)

雨上がりの朝(2022.11....
雨上がりの朝、夏なら強烈な朝もやになりますが、流石に晩秋です。
透明度のあるきれいな夜明け、名古屋方面の景観。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#SIGMA_DP0
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#kuma

People Who Wowed This Post

今日の日の出(2022.11.02)😄

今日の日の出(2022.11....
今日の日の出、位置は猿投山の頂上近くになりました。
雨上がりで、近隣の建物の反射がきれいです、このような時は滅多に有りません。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#SIGMA_DP0
#sunrise_ichinomiya
#Sunset_ichinomiya
#日の出_一宮
#夜明け_一宮
#kuma

People Who Wowed This Post

Excel VBAを始めるには(001)

ExcelVBAを始める方のために記す(001)

PCで仕事をしているなら99%はExcelでなにかをしている。
しかし、VBAはおろかMacroも無縁な方が実に多い。

以下、初心者が躓く部分。
MacroとVBAは実は別物、Macroは操作を記録し、可読性のあるSourceにしただけの
もの。
再実行は出来るが、操作上の会話などは出来ない、値を渡すことも出来ない。
つまり、実行の確認や、日付や数値の指定はMacroのみでは出来ないと言える。

Macroは簡単に編集が出来る、その機能はExcel等に含まれており、別途インストール
の必要は無い、編集を選択するだけである。

しかし、編集段階でプログラム記述の能力が要求される。
最初は高望みせず、まずSourceを眺め、それを改行することからはじめる。
改行には多少のルールがあるが、要は可読性を上げることが目的。

さらに、ここでコメントを追加、挿入してみる。
コメントは可読性を格段に向上させる、VBAに限らずプログラム言語は文法は
通常の会話言語と比べ、恐ろしく簡単で、単語も少ない。
しかし、少ない単語ゆえ、組み合わせでの表現となり、ここに「変数」が加わるため
そのままでは可読性が下がる。

プログラムは自分で書いたモノでも3日(三歩ではない)経つと思い出せない。
と言われるが、実にその通り。

とにかく、改行をコメントを繰り返してやってみよう。
改行を行い、コメントを入れた段階で、MacroはVBAになる。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

Excel-VBA セルに背景色を

セルのデータに応じた背景色をつける事はよく行われます。
しかし、そのセル数が1000以上あった場合、その作業は大変です。
データに応じた背景色を個々に着色するのは、CTRLキーを併用しても
10色以上ともなれば重労働です。
こんな時はVBAを使います。
Loopでセルの個別の値を読み取り、該当する背景色で着色します。
Sourceは、50人の一ヶ月間(約1500-1550)のセルを、二段階のLoopで
回し、その処理を行っています。
様々な判定基準があるので、前後関係も検証しています。


Sub SKD_Count()
'
' SKD_Count Macro


' 月間予定表の色付け&集計

'
Sheets("SKD1").Select
Range("C10:AG59").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A1").Select


Dim Y_n As Long, X_n As Long
Dim i As Long, j As Long, k As Long
Dim Nor_n As Long, Nit_n As Long, Hol_n As Long, Mon_n As Long, Sus_n As Long
Dim Zer_n As Long
Dim W_cF_n As Single, W_cB_n As Single
Dim PoPF_n As Long, PoPB_n As Long

Dim W_c As String, W_c2 As String

Dim vega, vega_date, vega_time, U_Nam As String

U_Nam = Environ("USERNAME")

vega = Now()

vega_date = Mid(vega, 6)

vega_time = Right(vega, 8)




For i = 3 To 33

For j = 10 To 59

W_c = Cells(j, i)

'+の前後の数値を取り出す

If W_c = "0" Or W_c = "*" Or W_c = "Y" Or W_c = "=" Or W_c = "Q" Or W_c = "S" Or W_c = "S" Or W_c = "T" Then

If W_c = "0" Then Zer_n = Zer_n + 1

Else

PoPF_n = InStr(W_c, "+") '+位置を検出前方
PoPB_n = InStrRev(W_c, "+") '+位置を検出後方
PoPB_n = Len(W_c) - PoPB_n + 1 ' Rightのために位置算出

If PoPF_n = 0 And PoPB_n = 1 Then

Else

W_cF_n = Val(Left(W_c, PoPF_n))
W_cB_n = Val(Right(W_c, PoPB_n))


'Debug.Print PoPF_n & ":" & PoPB_n & "-" & Len(W_c)

'Debug.Print W_cF_n & ":" & W_cB_n

End If


End If


Select Case W_c '勤務状態で色を決める

Case "*"

Cells(j, i).Interior.ColorIndex = 41

Hol_n = Hol_n + 1

Case "="

Cells(j, i).Interior.ColorIndex = 8

Hol_n = Hol_n + 1

Case "Y"

Cells(j, i).Interior.ColorIndex = 17

Hol_n = Hol_n + 1

Case "Q"

Cells(j, i).Interior.ColorIndex = 3

Nit_n = Nit_n + 1


Case "R"

Cells(j, i).Interior.ColorIndex = 27

Nit_n = Nit_n + 1

Case "S"

Cells(j, i).Interior.ColorIndex = 44

Nit_n = Nit_n + 1


Case "T"

Cells(j, i).Interior.ColorIndex = 46

Nit_n = Nit_n + 1


End Select




If Left(W_c, 2) = "0+" Then

Cells(j, i).Interior.ColorIndex = 26

Nit_n = Nit_n + 1


End If

If Left(W_c, 2) = "16" And W_cB_n > 4 Then

Cells(j, i).Interior.ColorIndex = 26

Nit_n = Nit_n + 1

End If

If Left(W_c, 2) = "18" And W_cB_n > 4 Then

Cells(j, i).Interior.ColorIndex = 26

Nit_n = Nit_n + 1

End If

If Val(Left(W_c, 1)) < 8 And Val(Left(W_c, 1)) > 5 Then

Cells(j, i).Interior.ColorIndex = 43

Mon_n = Mon_n + 1

End If

If Val(Left(W_c, 2)) >= 16 And Val(Left(W_c, 2)) + Val(Right(W_c, 1)) <= 20 Then

Cells(j, i).Interior.ColorIndex = 17

Sus_n = Sus_n + 1

End If




Next j

Nor_n = 50 - Nit_n - Hol_n - Mon_n - Sus_n - Zer_n

Cells(3, i) = Nor_n
Cells(4, i) = Nit_n
Cells(5, i) = Hol_n
Cells(6, i) = Mon_n
Cells(7, i) = Sus_n
' Cells(8, i) = Zer_n
' Cells(9, i) = Zer_n + Sus_n + Mon_n + Hol_n + Nit_n + Nor_n

Nor_n = 0
Nit_n = 0
Hol_n = 0
Mon_n = 0
Sus_n = 0
Zer_n = 0

Next i

Range("A2") = vega_date
Range("B2") = vega_time


End Sub



わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma

People Who Wowed This Post

映像と音声その104(Video三脚)

映像と音声その104(Vide...
重いビデオカメラを使うようになって、三脚と雲台の重要性がわかるように
なってきた。
国産ではLibecという良い会社があり、雲台は使っているが、なにせ高い。
さらに、このクラスではSachtle(ザハトラー)という更に高額な機材がある。
機種によっては50万円もするが、私には無用であり欲しいとも思わない。
今回の三脚と雲台は4万円でお釣りがくる中華製、BENROのBV6。
Webでは高評価だが「ブランド品」ではない。

映像業界は、このブランド志向が意外に強い、たしかに良いものがあるが、
そこまで高額な価値があるのか、私にはわからない、信号伝送のプロとして
言わせていただくなら、それよりケーブルや中継機にお金をかけるべきと
思う。


わかお かずまさ
VegaSystems

📷📷📷📷📷📷
#LAN_PRO
#Bloguru
#kuma_ichinomiya
#VegaSystems
#photography_Ichinomiya
#kuma

People Who Wowed This Post

×
  • If you are a bloguru member, please login.
    Login
  • If you are not a bloguru member, you may request a free account here:
    Request Account