ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

EXCEL VBA 学習広場コミュのこんなサブルーチン(関数)作ったよ、とお披露目トピック 

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんなサブルーチン(関数)作ったよとお披露目するトピックです。

何故サブルーチン(関数)をつくるのか?

それはコードを一文で再利用したり、
他の言語、環境になっても、
同じ共通な名前のサブルーチン(関数)を使う事により、

たとえばEXCELとGoogleスプレッドシートで
メインルーチンではコピーして少しの修正をすることで、
『EXCELでもGoogleスプレッドシートでも動くマクロ』を組めます。

ではお披露目しましょう。

コメント(25)

このサブルーチンを作り方は覚えなくてもコピペして持ってこれれば、使い方を覚えればいいです。
使い方は同じ引数なので共通な部分は多いです。EXCEL←→Googleスプレッドシートでメインプログラムでは方言さえ修正すれば、ほとんどメインプログラムは同じように作れます。

そういうサブルーチン化する事により互換性と言って、コードの再利用と言うのが出来ます。

良かったら使ってみてください。まずはシートのセルに書き込みをするルーチンから。

'EXCEL VBA
Sub test()
 Call set_sheet_cell( "Sheet1", 3, 2, "test" )
End Sub

//Googleスプレッドシート
function test() {
set_sheet_cell( "Sheet1", 3, 2, "test" );
}

Sheet1というシートの"B3"セルに『test』と言う文字列を書き込むプログラムです。

毎回

Sub test()
 Sheets("Sheet1").Cells(3,2).Formula = "test"
End Sub

function test() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName( "Sheet1" );
 sheet.getRange( 3, 2 ).setValue( "test" );
}
みたいにベタでコードを書き込むより使いやすいでしょう?
じゃこれらのルーチンを使う為に関数やサブルーチン書きます。
コピペしてね。
EXCEL VBA ===============================

Sub test()
 Call set_sheet_cell( "Sheet1", 3, 2, "test" )
End Sub

Sub set_sheet_cell( ByVal sheet_name As String, ByVal y As Integer, ByVal x As Integer, ByVal a As Variant )
 Sheets(sheet_name).Cells(y, x).Formula = a
End Sub
Googleスプレッドシート===================
Function test() {
 set_sheet_cell( "Sheet1", 3, 2, "test" );
}

// 指定したSheetの中のcellの内容を書き込み
function set_sheet_cell( sheet_name, y, x, a ) {

 if( sheet_name != "" ) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName( sheet_name );
 }
 else {
  var sheet = SpreadsheetApp.getActiveSheet();
 }

 sheet.getRange( y, x ).setValue( a );

}
>>[5]
こんなプログラムを書いてるようでは100年経っても上達しないよ
>>[4]
そもそもそんなコードを書くプログラマーはいません
>>[8]
プログラマ―は、サブルーチンや関数を、自由に作っちゃいけないのでしょうか?

各環境で共通の同名のサブルーチンや関数を作る事により、異機種間、異アプリ間で、コードの再利用で開発速度が上がるし、移植性が良くなると思うのですが、そこはかめさんはどう考慮するかを聞きたいのですが…。

僕はそうやって育ったから、自分のやり方は自分で作って仕事をし、
結局それで問題が出てきて、解決できない問題があったら自己責任です。

ただ、使いこなしたサブルーチンや関数を作りためて再利用する事により、利便性や開発期間の短縮は出来ます。
============================
かめさんのコードが観て見たいです。

かめさんが僕より優れてるから、僕を否定する意見を言うのだろうと思うので、ぜひ僕を打ち砕く優れたコードを見せて貰えたら幸いです。

僕も凄く勉強になると思います。
============================
それともかめさんの求めてるモノを提供しない事が、クレームの原因でしょうか?

それだったら僕の教えるスキル不足だし、かめさん自身が具体的に何を求めてるかが、解らないから、もっと細かく聞きたいです。

なんにせよ、より僕らがもっと向上出来る学びをしたいです。

ご協力お願い致します。
>>[8]
厳しい方だと思いますが、出来る事なら優しくお話して貰えたら嬉しいです。
お互いどう言ったらより良くコミュニケーションが出来、どう学習向上するかを話し合えたら嬉しいです。

またかめさんの勉強方法と言うものも、興味深いです。よかったら教えて貰えたら、僕ももっと賢くなると思えます。
>>[8]
すみません、別にかめさんに対し言い訳をしてる様に感じて、腹を立ててると思います。(誤解があったらすみません)。僕もかめさんの技術向上を語り合いたいですが、かめさんの技術がどのくらいか解らず、どう話せばいいか見えてこないんです。否定するから、僕が至らない点が沢山ある事は自負します。

でも、かめさんと技術の話をしようとしても、否定されるだけでは、どう自分を直せばいいか解らないんです。

それは伝わらないでしょうか?別にかめさんを虐めたい訳ではなく、かめさんに従う事が言い訳ではない行動に成るのはごもっともです。でも従うにも、何が正しいのか?どうしたらかめさんの言う解りやすいコードになるのか?

それが解らないから、感情的に長文や言い訳を書いてしまうのです。

だからもっと説得力ある、指導を、教育者の視点やプログラマーの視点を具体的に示して欲しいのです。そうでないと否定ばかりされて具体的な改善方法を提示し議論出来ないのであれば、僕も言い訳ばかりになってしまいます。
============================
でもそう言う風に言うのが、当たり前の環境の学校なり仕事場なりで、指導者と相対していたのかもしれないなと思います。本当に分かりやすいとか、本当にやりきったとか、そう言う育ち方をしてないなら、具体的な指摘が難しいのかもしれないなとも思います。

かめさんの心や考えを想像してモノを言ってるので僕も失礼にも感じます。
僕もずかずか、かめさんの心に土足で踏み荒らしてるのも解ります。

ただやはり否定するだけ、中傷するだけの言葉では、かめさんと言う人間がどういう人間が解らず、どう言う指導の仕方がいいかわからず、どう言う風に僕より優れたかめさんから学べばいいかが解らないです。

具体的に言ってくれないと解らない、向き合えないです。だから想像して何とか、かめさんと向き合おうと必死なんです。だから言い訳ばかりに成る傾向があるのです。
============================
もっとより良いコミュにする為に僕等を指導するなら、是非して欲しいです。

確かに僕は色々な人をこのコミュに誘った、
そう僕自身の慰め要員でしょう。
でもその慰められる事によって、
与えたい気もちがあるから、
もっともっと話し合いたいんです。
僕自身の至らない点、みんなの至らない点、
かめさんの至らない点と向き合いたいです。

だからぼくらに解るよう、話して欲しいんです。
不満があるならただ不満を言うだけでなく、正しい道標を出して欲しいです。
=============================
それに僕が同意しないで議論する可能性もあるから、
かめさんが話を拒否される事も予想します。

でも、そうやってガチンコ勝負を、
自分の気持ちや考えを言葉にする事で、
僕は自分の負けを認められると思います。

だから喧嘩するほど仲がいい。
そんなかめさんとの関係も模索出来たら、
人間としての付き合いも出来るように思えます。
嫌かもしれませんが。
=============================
僕もかめさんの技術向上が出来るよう、
(僕じゃない人が教えてくれても全然かまいません)願います。
僕も自分の技術向上がしたいです。

だからもし可能なら共に悪い点を具体的に批判し合い、良い点を具体的に褒め合い、そしてより良いコードを議論し、語り合いましょう!解り合いましょう!
>>[12]

その人は文句ばっかり付けるだけで解決策とか真面目なコメントを返す気は無いと思うよ。
本人はマウント取ってるつもりみたいだけど、まるでどっかの野党みたいに文句しか書かないから、滑稽で見てて面白いけど(^o^)

無視しとけば?

ま、自分も正直なところ、このサブルーチンのサンプル(セルの内容のセットなんて)必要かなと思う。
もっと実用的なものにすべきじゃないかなと思うけどね。
>>[13]
あ、ありがとうございます。もし、僕が真面目に接したらどう答えてくるかとちょっと思って…

あ、たしかに関数にする必要がないだろうけど、もしGoogleSpreadSheetでセルを扱う時の場合とEXCELでつくると、どういう違いがあるか?をちょっと伝えたかったし、同じ表計算でプログラムを組むとき、そんなに修正の必要のない利用方法とか、いろいろと伝えたい要素を詰めてた…僕の欲張りな心があったように思います。

もし異アプリ間の作り方(移植時の時など)の目的なら、もうちょっと違ったトピを作ったりした方が良かったかもしれません。いろいろと伝えたい事がいっぱいあって、欲張ってます。
===========================
もうちょっと反省しながら今後どうしていくかを考えたいです。あと特にデータベースや表テーブルに置いてすぐさま組み込むのが大変なコードを、サブルーチン化するとか、いろいろ語りたい事はあるんですが、まずは解りやすい所から、書き込みを練習したかった。そんな入門者でも入りやすい関数はどうかなと思った時、まずは一つのセルに読み書き、動きの解りやすいset_sheet_cell()と言う関数から紹介しました。

よく考えるとEXCELのコードで、sheet名が””、空文字列だった場合はGoogleSpreadSheetのサブルーチンと動きが違う…実際EXCELではほとんど使ってないサブルーチンだったんです。

GoogleSpreadSheetではちょっとそのままベタで書き込んで使うには、スペルが長く扱いづらかったので一つサブルーチンを作って、その後それを使い続けてたので、自分の作った関数で馴染みが多かったのです。

言い訳っちゃ言い訳ですが。
===========================
EXCELもGoogleSpreadSheetもどちらもそれぞれの良い個性のあるアクの強い言語で、覚えて使ってるうちに、凄く面白く、どちらもエキサイティングにハマってます。だからもっとプログラミングを語り合いたい。そんな語り合いが出来る人が一人でも楽しく身に着ける事に貢献したい。

不恰好ながら、お互い皆共に技術向上したいです。

語り合いたいです。
>>[15]
横レス失礼します。

ま、僕もクレーマーだったからかねさんを認めるようMILANOさんも認めてあげてください。

荒らす荒らさないはお互い様だよね。みんなで否定し合ってる所の空気を作ってる原因は僕で、それに対しかめさんなり、MILANOさんがその派生した否定した意見を発してるだけなので、管理人に言いたい事のトピックで2チャンネルみたいな否定意見はそこでやってくれたら僕もコミュニケーションをそれなりに対応しようと思います。

否定したら否定される。言い訳される。それはコミュニケーション上覚悟してください。

もしそれが不満なら、もっとお互い技術で語り合って、ガチンコ勝負しましょう(笑)

まあ僕も以前は貧弱野党の山本太郎さんみたいな、自分の場の空気を作るクレーマーでしたし(汗)少しずつマシになろうとしてます。

かめさんともクレームやマジレスで喧嘩するほど仲のいい友達になれそうな気がします。(@_@ちょっと疲れるし嫌がるだろうし僕も何やってんだろうと思うけど、そんなかめさんもどうしたら幸せになれるか?対人関係でもっと人とホッコリするような関係が作れないか?お疲れ様ですよね。本当に。

×かねさん→〇かめさん MとN押し間違えた。
>>[15]
>>[19] MILANOさん

https://mixi.jp/view_bbs.pl?comm_id=6366312&id=96759479
このコミュニティに対する、管理人に対しての意見

こちらの方で2チャンネル見たいな不毛のやり取りはして欲しいです。

僕も管理人としては未熟だけど、お相手もするし、みんな荒らさないでくださいねというならこのトピックで、語り合いましょう。

それとも『2チャンネルのような不毛なやり取りはこちら』というトピックを作った方が良いか?皆さんの意見を聞きたいです。
>>[21]

何でもかんでも「トピック作れば」解決すると思ってない?


って事で、文句しか言わないどっかの政治家みたいな方(笑)(^o^)
きちんと内容のある書き込みをお願いしますね。

ま、実力が無いから書けないってのは見え見えなんだけどね(笑)
>>[23]

いやいや、そうじゃなくて。

どっかの政治家みたいな方がきちんと内容のある書き込みをすればいい話でしょ。
なんで荒らす方向に持っていくの?

もし、その方がまだ荒らすのであれば、そこで管理人権限行使すればいいでしょ。
聞く耳持ってないんだから(笑)
>>[24]
>https://mixi.jp/view_bbs.pl?comm_id=6366312&id=96759479
>このコミュニティに対する、管理人に対しての意見
こちらで語り合いましょう!

ログインすると、残り2件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

EXCEL VBA 学習広場 更新情報

EXCEL VBA 学習広場のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング