<<option chkGenerateAnRssFeed>> RSSフィード生成\n<<option chkOpenInNewWindow>> 新しいウィンドウでリンクを開く\n<<option chkSaveEmptyTemplate>> 空のテンプレートファイル(empty.html)を保存する\n<<option chkToggleLinks>> 既に開いている記事をクリックした時に閉じる\n^^(Ctrl+クリック等のキーアサインを変更します)^^\n<<option chkHttpReadOnly>> HTTP経由でのアクセス時に編集機能を隠す\n<<option chkForceMinorUpdate>> マイナーチェンジモードをデフォルトとする\n^^(Shift+'決定'やCtrl-Shift-Enterのキーアサインを変更します)^^\n<<option chkConfirmDelete>> 削除前に確認する\n記事編集エディットボックスの高さ: <<option txtMaxEditRows>>\nバックアップ保存用フォルダ: <<option txtBackupFolder>>\n<<option chkInsertTabs>> タブキーをタブ文字入力用に使用する(デフォルトではフィールド移動)
/***\n\n!~AutoCloseMessagePlugin - 時限メッセージダイアログ\n\n''説明''\n~TiddlyWikiで保存したり検索したときに右上に出るダイアログ風の\nポップアップは意外と邪魔になるものです。どうせ定型的な内容だし、\nそれをクリックするような状況もほとんどないので数秒たったら自動的に\n消えるようなプラグインを作成しました。\n\n''インストール''\n この記事の内容をペースト、systemConfigタグを付けて保存、リロード。\n 全てのメッセージダイアログが3秒で消えるようになります。\n {{{timeout: 3000}}}の箇所を変更すると消えるまでの時間を設定できます。\n\n----\n''ソースコード''\n***/\n//{{{\nconfig.autoCloseMessage = {\n timeout: 3000\n};\n\njavascript:(\n function() {\n var orig_displayMessage = displayMessage;\n displayMessage = hook_displayMessage;\n\n function hook_displayMessage(text,linkText) {\n orig_displayMessage(text,linkText);\n setTimeout("clearMessage()", config.autoCloseMessage.timeout);\n }\n }\n)();\n//}}}
次に、文字列に定型的な装飾(囲み線)を付加するためのマクロboxを作成します。\n文字列を装飾するためには、指定した文字列をSPANタグで囲み、SPANタグにスタイル定義を追加します。\n\n!マクロの登録\nboxマクロは属性を使用しないので、マクロの登録方法は[[hello|マクロの作り方1 - HelloMacro]]と同様です。\n>config.macros.''box'' = {};\n\n!処理本体を記述\nハンドラも同じように宣言します。\n>config.macros.''box''.handler = function(place,macroName,params)\n\nタグを作成するには、createTiddlyElement関数を使用します。また、作成したタグにスタイル定義を追加するためにstyle属性を使用します。\n<<<\n{\n var e = createTiddlyElement(place,"span",null,null,params[0]);\n e.style["border"] = "1px solid #000";\n e.style["padding"] = "0.2em 1em 0.2em 1em";\n}\n<<<\n\n|!関数|>|''createTiddlyElement''(theParent,theElement,theID,theClass,theText)|\n|!処理|>|親ノードにエレメントを追加する|\n|!引数|theParent|親ノード|\n|~|theElement|追加するタグ名|\n|~|theID|ID属性(省略可)|\n|~|the Class|クラス属性(省略可)|\n|~|theText|タグの内側に記述するテキスト(省略可)|\n\n!ソースと実行例\n''ソース'' [[BoxMacro|BoxMacro - 文字列に囲み線をつける]]\n<<tiddler "BoxMacro - 文字列に囲み線をつける"">>\n\n''使用方法''\n{{{\n<<box "box macro sample">>\n}}}\n\n''実行例''\n<<box "box macro sample">>\n\n----\n前:[[マクロの作り方1 - HelloMacro]] 次:[[マクロの作り方3 - MDumpMacro]]
//{{{\n// Box\n// 文字列に囲み線をつける\nconfig.macros.box = {};\nconfig.macros.box.handler = function(place,macroName,params)\n{\n var e = createTiddlyElement(place,"span",null,null,params[0]);\n e.style["border"] = "1px solid #000";\n e.style["padding"] = "0.2em 1em 0.2em 1em";\n}\n//}}}
箇条書きやテーブルの中で改行するための{{{<<br>>}}}マクロはVersion2.1.0以降推奨されなくなりました。以下のように{{{<br>}}}タグを使用してください。\n\n!書式\n{{{<br>}}}\n!使用例\n{{{\n*箇条書きの<br>改行\n}}}\n*箇条書きの<br>改行
数人で同じパソコンを使う時、出力した書類にファイル名(絶対パス名)も入れてあげると\n親切です。\nそんな時に役立つのがCELL関数\n\nCELL関数は\nセルの書式、位置、内容についての情報を返します。\n\nCELL(検査の種類, 対象範囲)\n=CELL("filename",A9)で、\nC:\sMy Documwnts\sエクセルファイル\s[あくび.xls]Sheet1\nのように表してくれます。\n\nこの対象範囲はfilenameの場合、そのシート上なら何処でもOK!\n\n検査の種類色々。\n| 検査の種類 | 結      果||\n| address |セルの参照を表す文字列。| $A$9等 |\n| col |左上隅にあるセルの列番号| 1等 |\n| color |負の数を色で表す書式がセルに設定されていれば 1、そうでなければ 0(ゼロ)。| 0等 |\n| contents |左上隅にあるセル内容。| 0等 |\n| format |セルの表示形式に対応する文字列定数。| G等 |\n| orotect |セルがロックされていなければ 0、ロックされていれば 1||\n
はじめまして♪
\nDo Until 条件式\n   ・\n   ・\n   ・\nLoop \nです。Untilは『まで』という意味です。\nDo Until~Loop文は条件式が真(正しい)になるまで、\nループを繰り返します。\nつまり、Do While~Loop文とは反対で、\n条件式が偽(正しくない)ときループを繰り返し、\n真になるとループから抜け出します。\n\n1から10まで加えるプログラム例を考えると、\nPrivate Sub CommandButton1_Click()\n\n    Dim i, wa As Integer\n\n    wa = 0\n    i = 1\n    Do Until i = 11\n        wa = wa + i\n    i = i + 1\n    Loop\n\n    Cells(6, 1) = wa\n\nEnd Sub \n
!ダウンロード\n 最新板のTiddlyWikiは、以下のアドレスから入手できます。\n以下のアドレスで表示された、中ほどの \nthis link\nを右クリックし、「リンク先を名前を付けて保存」で保存します。\nthis link to empty.html\nなら、ほぼ白紙のTiddlyWikiです\n\nhttp://www.tiddlywiki.com/#DownloadSoftware\n\n|※必ず、右クリックし、「リンク先を名前を付けて保存」で保存して下さい。ブラウザのファイル/名前を付けてページの保存を利用しないで下さい。ブラウザのファイル/名前を付けてページの保存を利用すると正常に利用できないことがあります。|\n\n!!※TiddlyWikiをローカル環境で保存(save)出来ない。\n|TiddlyWikiは、edit、done、save changedとしていくと「エラーが発生しました」になって、どうしても変更を保存できません。変更を保存できなくて、いつまで経っても、初期設定のままです。という質問がありました。これは多分ファイルのブロックが掛かっているので解除すれば大丈夫だと思います|\n\n。(参考)TiddlyWiki で遊んでみるhttp://watcher.moe-nifty.com/memo/2005/09/tiddlywiki__f8c6.htmlフォルダ名(の絶対パス)に空白文字が含まれるところに置いては駄目(例えば、デスクトップとかマイ ドキュメントとかには設置不可)。インターネットから拾ってきたファイルにはセキュリティのブロックがかかっているwindows XP SP2 の場合)ので、このブロックを解除しないと駄目。ロック解除の仕方はエクスプローラでファイルを選択して、プロパティでブロック解除ボタンを押す。\nこれで保存出来ると思います
   標準モジュール\n{{{\nSub 右方向()\n Application.MoveAfterReturnDirection = xlToRight\nEnd Sub\n\nSub 下方向()\n Application.MoveAfterReturnDirection = xlDown\nEnd Sub\n\nSub 左方向()\n Application.MoveAfterReturnDirection = xlToLeft\nEnd Sub\n\nSub 上方向()\n Application.MoveAfterReturnDirection = xlUp\nEnd Sub\n\nSub 停止()\n Application.MoveAfterReturn = False\nEnd Sub\n}}}
  標準モジュール \n!!Excelを最小化するには\n{{{\nSub test()\n Application.WindowState = xlMinimized\nEnd Sub\n}}}\n\n!!Excelを最大化するには \n{{{\nSub test()\n Application.WindowState = xlMaximized\nEnd Sub\n}}}\n
\n!概要\nCSSのグラデーション装飾を簡易的に設定します。\n!書式\n{{{<<gradient 方向 色1 色2 ……>>装飾対象文字列>>}}}\n\n 方向: ''vert''(縦方向に色変化)または''horiz''(横方向に色変化)を指定\n 色: #rrggbb形式で指定\n!使用例\n{{{\n|<<gradient vert #ffffff #ffdddd #ff8888>>グラデーション<br>効果の例>>|\n<<gradient horiz #ff8888 #ffff88 #88ff88 #88ffff #8888ff #ff88ff>>虹色>>\n}}}\n|<<gradient vert #ffffff #ffdddd #ff8888>>グラデーション<br>効果の例>>|\n<<gradient horiz #ff8888 #ffff88 #88ff88 #88ffff #8888ff #ff88ff>>虹色>>\n
/***\n\n!!Version\n1.1\n\n!!Description\nカレンダーを表示する.\n\n!!Usage\n{{{<<gtdCalendar offset open size>>}}}\n\n|!offset|表示月のオフセット-1:先月、0:今月、1:来月 ...|\n|!open|"open"を指定すると当日分のスケジュールが開いた状態で表示される|\n|!size|フォントサイズ|\n\n!!Configuration\n開始曜日(0:Sun, 1:Mon, 2:Tue ...) <<option txtGtdCalendarStartDay>>\n\n***/\n\n//{{{\nif (config.options.txtGtdCalendarStartDay == undefined)\n config.options.txtGtdCalendarStartDay = 0;\n\nconfig.macros.gtdCalendar = {\n scheduledDate: null,\n holidays: null\n};\n\nconfig.macros.gtdCalendar.handler = function(place,macroName,params)\n{\n var m = config.macros.gtdCalendar;\n\n refreshStyles("gtdStyleSheet");\n\n var wrapper = createTiddlyElement(place,"div",null,"calendar",null);\n\n if (!m.holidays)\n m.holidays = m.getHolidays();\n\n wrapper.name = "gtdCalendar";\n wrapper.setAttribute("monthOffset", "0");\n wrapper.setAttribute("yearOffset", "0");\n\n if (params[0]) wrapper.setAttribute("monthOffset", params[0]);\n if (params[2]) wrapper.style.fontSize = params[2];\n\n m.show(wrapper);\n if (params[1] == "open") {\n var now = new Date();\n m.openContent(wrapper, now.formatString("YYYY0MM0DD"));\n }\n}\n\n// document.getElementsByName()では動的に作られたノードが\n// 取得できないバグ(IE、Opera)対策\nconfig.macros.gtdCalendar.getElementsByName = function(place, tag, name)\n{\n var list = new Array();\n var tmplist = place.getElementsByTagName(tag);\n for (var i=0; i<tmplist.length; i++)\n if (tmplist[i].name == name)\n list.push(tmplist[i]);\n return list;\n}\n\nconfig.macros.gtdCalendar.refresh = function(hint) {\n\n var m = config.macros.gtdCalendar;\n var cnt = 0;\n var cal = m.getElementsByName(document, "div", "gtdCalendar");\n for (var i = 0; i < cal.length; i++) {\n var links = cal[i].getElementsByTagName("a");\n for (var j = 0; j < hint.length; j++) {\n for (var k = 0; k < links.length; k++) {\n var param = links[k].getAttribute("param");\n if (param == hint[j]) {\n var td = links[k].parentNode;\n if (m.scheduledDate[hint[j]] == undefined\n || m.scheduledDate[hint[j]] == 0)\n td.className = td.className.replace(/calendarExist/, "calendarEmpty");\n else\n td.className = td.className.replace(/calendarEmpty/, "calendarExist");\n break;\n }\n }\n }\n\n var content = cal[i].lastChild;\n if (content.className=="calendarContents") {\n var datestr = content.getAttribute("date");\n var now = new Date();\n if (datestr == now.formatString("YYYY0MM0DD")) {\n m.closeContent(cal[i]);\n m.openContent(cal[i], datestr);\n } else {\n for (var j = 0; j < hint.length; j++) {\n if (datestr == hint[j]) {\n m.closeContent(cal[i]);\n m.openContent(cal[i], datestr);\n break;\n }\n }\n }\n }\n }\n}\n\nconfig.macros.gtdCalendar.show = function(place) {\n\n var m = config.macros.gtdCalendar;\n if (!m.scheduledDate)\n m.scheduledDate = m.getScheduledDate();\n\n var theDay = new Date();\n theDay.setDate(1);\n theDay.setFullYear(theDay.getFullYear() + Number(place.getAttribute("yearOffset")));\n theDay.setMonth(theDay.getMonth() + Number(place.getAttribute("monthOffset")));\n\n removeChildren(place);\n\n var tbl = createTiddlyElement(place, 'table');\n var tbody = createTiddlyElement(tbl, 'tbody');\n\n var tr = createTiddlyElement(tbody, 'tr');\n\n // ヘッダ表示\n var cssClass = 'calendarHeader';\n var e;\n var td;\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, "<<", "last year", this.onClick);\n e.setAttribute("param", "LastYear");\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, "<", "last month", this.onClick);\n e.setAttribute("param", "LastMonth");\n\n var thisMonth = theDay.formatString(m.headerFormat);\n var theClass;\n if (m.scheduledDate[theDay.formatString("YYYY0MM00")])\n theClass = cssClass + ' calendarExist';\n else\n theClass = cssClass + ' calendarEmpty';\n theClass = theClass + ' calendarClose';\n td = createTiddlyElement(tr, 'td', null, theClass);\n td.setAttribute("colSpan", 3);\n e = createTiddlyButton(td, thisMonth, thisMonth, this.onClick);\n e.setAttribute("param", theDay.formatString("YYYY0MM00"));\n\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, ">", "next month", this.onClick);\n e.setAttribute("param", "NextMonth");\n td = createTiddlyElement(tr, 'td', null, cssClass);\n e = createTiddlyButton(td, ">>", "next year", this.onClick);\n e.setAttribute("param", "NextYear");\n\n\n // 曜日表示\n tr = createTiddlyElement(tbody, 'tr');\n for (var pos = 0; pos < 7; pos++) {\n var e = createTiddlyElement(tr, 'td', null, 'calendarDays', m.days[m.pos2day(pos)]);\n }\n tr = createTiddlyElement(tbody, 'tr');\n\n // 1日~末日表示\n var now = (new Date()).formatString("YYYY0MM0DD");\n theDay.setDate(1 - m.day2pos(theDay.getDay())); // 1日の週の開始曜日に設定\n var nextDay = new Date(theDay);\n var monthCnt = 0;\n if (theDay.getDate() == 1) // 1日が日曜日の場合足かけ2ヶ月分(それ以外はあしかけ3ヶ月分)\n monthCnt = 1;\n var youbi = m.pos2day(0);\n for (;;) {\n var datestr = theDay.formatString("YYYY0MM0DD");\n var mmdd = datestr.substr(4);\n var cssClass = 'calendarClose';\n if (youbi == 0 || youbi == 6 || m.holidays[datestr] || m.holidays[mmdd])\n cssClass = cssClass + ' calendarHoliday';\n else\n cssClass = cssClass + ' calendarWeekday';\n if (monthCnt == 1)\n cssClass = cssClass + ' calendarThisMonth';\n else\n cssClass = cssClass + ' calendarOtherMonth';\n if (datestr == now)\n cssClass = cssClass + ' calendarToday';\n if (m.scheduledDate[datestr])\n cssClass = cssClass + ' calendarExist';\n else\n cssClass = cssClass + ' calendarEmpty';\n var td = createTiddlyElement(tr, 'td', null, cssClass);\n var tooltip = theDay.getDate();\n if (m.holidays[datestr] && m.holidays[datestr] != true)\n tooltip = tooltip + ' ' + m.holidays[datestr];\n else if (m.holidays[mmdd] && m.holidays[mmdd] != true)\n tooltip = tooltip + ' ' + m.holidays[mmdd];\n var e = createTiddlyButton(td, theDay.getDate(), tooltip, this.onClick);\n e.setAttribute("param", datestr);\n\n nextDay.setDate(theDay.getDate() + 1)\n youbi = nextDay.getDay();\n if (theDay.getMonth() != nextDay.getMonth())\n monthCnt++;\n if (monthCnt == 1 && m.day2pos(youbi) == 0)\n tr = createTiddlyElement(tbody, 'tr');\n if (monthCnt >= 2 && m.day2pos(youbi) == 0)\n break;\n theDay.setTime(nextDay.getTime());\n }\n}\n\nconfig.macros.gtdCalendar.onClick = function(e)\n{\n var m = config.macros.gtdCalendar;\n\n var calendar;\n for (calendar = this.parentNode;\n calendar.className != 'calendar';\n calendar = calendar.parentNode)\n if (! calendar)\n return false;\n\n var param = this.getAttribute("param");\n if (param.match(/^[0-9]{8}$/)) {\n m.openContent(calendar, param);\n\n } else if (param == "LastMonth") {\n var month = Number(calendar.getAttribute("monthOffset"))\n month -= 1;\n calendar.setAttribute("monthOffset", String(month));\n m.show(calendar);\n } else if (param == "NextMonth") {\n var month = Number(calendar.getAttribute("monthOffset"))\n month += 1;\n calendar.setAttribute("monthOffset", String(month));\n m.show(calendar);\n } else if (param == "LastYear") {\n var year = Number(calendar.getAttribute("yearOffset"))\n year -= 1;\n calendar.setAttribute("yearOffset", String(year));\n m.show(calendar);\n } else if (param == "NextYear") {\n var year = Number(calendar.getAttribute("yearOffset"))\n year += 1;\n calendar.setAttribute("yearOffset", String(year));\n m.show(calendar);\n }\n\n return false;\n}\n\n\nconfig.macros.gtdCalendar.openContent = function(wrapper, datestr)\n{\n var old = config.macros.gtdCalendar.closeContent(wrapper);\n if (datestr == old)\n return;\n\n var dates = wrapper.getElementsByTagName("td");\n for (var i = 0; i<dates.length; i++) {\n if (!dates[i].firstChild.tagName)\n continue;\n var p = dates[i].firstChild.getAttribute("param");\n if (p && p == datestr) {\n dates[i].className = dates[i].className.replace(/calendarClose/, "calendarOpen");\n break;\n }\n }\n\n var calendarContent = createTiddlyElement(null,"div",null,"calendarContents",null);\n wrapper.insertBefore(calendarContent, null);\n var text = config.macros.gtdCalendar.getDateItem(datestr);\n calendarContent.setAttribute("date", datestr);\n wikify(text,calendarContent,null,null);\n}\n\nconfig.macros.gtdCalendar.closeContent = function(wrapper)\n{\n var datestr = null;\n\n var content = wrapper.lastChild;\n if (content.className=="calendarContents") {\n datestr = content.getAttribute("date");\n wrapper.removeChild(wrapper.lastChild);\n\n var dates = wrapper.getElementsByTagName("td");\n for (var i = 0; i<dates.length; i++) {\n if (!dates[i].firstChild.tagName)\n continue;\n var p = dates[i].firstChild.getAttribute("param");\n if (p && p == datestr) {\n dates[i].className = dates[i].className.replace(/calendarOpen/, "calendarClose");\n break;\n }\n }\n }\n\n return datestr;\n}\n\n\nconfig.macros.gtdCalendar.getScheduledDate = function()\n{\n var list = new Array();\n store.forEachTiddler(function(title,tiddler) {\n if (tiddler.tags.find("todo") != null) {\n for(var t=0; t<tiddler.tags.length; t++) {\n var yyyymmdd = tiddler.tags[t];\n if(yyyymmdd.match(/^[0-9]{8}$/)) {\n if (list[yyyymmdd] == undefined)\n list[yyyymmdd] = 0;\n list[yyyymmdd]++;\n var yyyymm00 = yyyymmdd.substr(0,6) + "00";\n if (list[yyyymm00] == undefined)\n list[yyyymm00] = 0;\n list[yyyymm00]++;\n break;\n }\n }\n }\n });\n return list;\n}\n\nconfig.macros.gtdCalendar.getDateItem = function(datestr, min) {\n\n var m = config.macros.gtdCalendar;\n\n var regex;\n var list = [];\n var overList = [];\n\n var now = new Date();\n var nowstr = now.formatString("YYYY0MM0DD");\n var nownum = Number(nowstr);\n if (datestr == nowstr) {\n regex = '^[0-9]{8}$';\n store.forEachTiddler(function(title,tiddler) {\n if (tiddler.tags.find("todo") == null)\n return;\n for(var t=0; t<tiddler.tags.length; t++)\n if(tiddler.tags[t].match(regex)) {\n var tiddlerDate = tiddler.tags[t];\n if (Number(tiddlerDate) > nownum)\n return;\n var text = tiddlerDate + ' [[' + tiddler.title + ']]';\n if (tiddlerDate == nowstr)\n list.push(text);\n else\n overList.push(text);\n break;\n }\n });\n } else {\n var day = datestr.substr(6);\n if (day == '00')\n regex = '^' + datestr.substr(0,6) + '[0-9]{2}$';\n else\n regex = '^' + datestr + '$';\n store.forEachTiddler(function(title,tiddler) {\n if (tiddler.tags.find("todo") == null)\n return;\n for(var t=0; t<tiddler.tags.length; t++)\n if(tiddler.tags[t].match(regex)) {\n var tiddlerDate = tiddler.tags[t];\n var text = tiddlerDate + ' [[' + tiddler.title + ']]';\n list.push(text);\n break;\n }\n });\n }\n\n list.sort();\n var content = "";\n if (datestr.substr(6) != '00')\n content = '<<gtdNewTiddler todo ' + datestr + '>><<br>><<br>>';\n for (var i = 0; i < list.length; i++) {\n var tiddlerDate = list[i].substr(0,8);\n var dt = newDateYYYYMMDD(tiddlerDate);\n if (Number(tiddlerDate) < nownum)\n content = content + '@@color:red;' + dt.formatString(m.listDateFormat) + '@@ ';\n else if (tiddlerDate == nowstr)\n content = content + "''" + dt.formatString(m.listDateFormat) + "'' ";\n else\n content = content + dt.formatString(m.listDateFormat) + ' ';\n content = content + list[i].substr(8);\n if (i + 1 < list.length)\n content = content + "<<br>>";\n }\n\n if (overList.length > 0) {\n content = content + "\sn----\sn";\n overList.sort();\n for (var i = 0; i < overList.length; i++) {\n var dt = newDateYYYYMMDD(overList[i].substr(0,8));\n content = content + '@@color:red;' + dt.formatString(m.listMonthDateFormat) + '@@ '\n + overList[i].substr(8);\n if (i + 1 < overList.length)\n content = content + "<<br>>";\n }\n }\n\n var cnt = list.length + overList.length;\n if (cnt > 0)\n cnt--;\n if (datestr.substr(6) != '00')\n cnt += 2;\n for (var t = 0; t < min - cnt; t++)\n content = content + '<<br>>';\n return content;\n}\n\n\nconfig.macros.gtdCalendar.getHolidays = function()\n{\n var list = new Array();\n var text = store.getTiddlerText("Holiday");\n if (text) {\n var lines = text.split("\sn");\n for (i = 0; i<lines.length; i++) {\n if (lines[i].match(/^([0-9]+)\ss+(\sS+)/))\n list[RegExp.$1] = RegExp.$2;\n else if (lines[i].match(/^([0-9]+)/))\n list[RegExp.$1] = true;\n }\n }\n\n return list;\n}\n\nconfig.macros.gtdCalendar.day2pos = function(day)\n{\n var start = Number(config.options.txtGtdCalendarStartDay);\n var pos = day - start;\n if (pos < 0)\n pos += 7;\n return pos;\n}\n\nconfig.macros.gtdCalendar.pos2day = function(pos)\n{\n var start = Number(config.options.txtGtdCalendarStartDay);\n var day = start + pos;\n if (day > 6)\n day -= 7;\n return day;\n}\n\n//}}}\n
//{{{\nconfig.macros.gtdmenu = {};\nconfig.macros.gtdmenu.createSlider = function(place,cookie,title,tooltip)\n{\n var cookie = cookie ? cookie : "";\n var h = createTiddlyElement(place, "h3");\n var btn = createTiddlyButton(h,title,tooltip,this.onClickSlider);\n var panel = createTiddlyElement(place,"div",null,"sliderPanel",null);\n panel.setAttribute("cookie",cookie);\n panel.style.display = config.options[cookie] ? "block" : "none";\n return panel;\n}\n\nconfig.macros.gtdmenu.handler = function(place,macroName,params)\n{\n var panel = this.createSlider(place,params[0],params[2],params[3]);\n var text = store.getTiddlerText(params[1]);\n if(text)\n wikify(text,panel,null,store.getTiddler(params[1]));\n}\n\nconfig.macros.gtdmenu.onClickSlider = function(e)\n{\n if (!e) var e = window.event;\n var n = this.parentNode.nextSibling;\n var cookie = n.getAttribute("cookie");\n var isOpen = n.style.display != "none";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(n,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n n.style.display = isOpen ? "none" : "block";\n config.options[cookie] = !isOpen;\n saveOptionCookie(cookie);\n return false;\n}\n\n//}}}
★[[どのシートでブックを閉じても起動時シート1が開くようにする]]\n----\n★[[エクセルのファイルを開いた時にフォームを同時に出す]]\n----\n★[[ブックを「閉じるとき」に自動的に保存する]]\n----\n★[[マクロでBookを閉じる]]\n----\n★[[保存確認のメッセージを表示しないでブックを閉じる]]\n----\n★[[マクロの動きを見せない]]\n----\n★[[何よりも先にユーザーフォームを表示]]\n----\n★[[]]\n----\n★\n\n[[セルの選択・参照]]
[[入力方法]]\n[[リストをセットする (1列型)]]\n[[リストをセットする (2列型)]]\n[[リストをセットする (重複除去)]]\n[[選択されたら2列目を表示する (2列型)]]\n[[コンボBOX初期設定、初動設定]]\n[[入力・選択時に動作するイベントマクロ]]
[[半角⇔全角]]\n[[SUMIF]]\n[[countif]]\n[[条件付書式設定]]\n[[CELL]]\n[[重複入力させない]]\n[[重複データを見つける]]\n[[ユーザ設定関数=セルの色を判別]]\n[[「TRUE」、「FALSE」を数値に]]\n[[シートの必要な部分だけ表示して周りを隠す]]
[[アクセスキーを使う]]
[[ファイル名を取得]]\n[[自己パス名を取得]]\n[[最終行の取得]]\n[[同じフォルダのダイアログを開く]]\n[[フィルタオプションによるデータ抽出]]\n[[氏名一覧から無作為に抽選する]]
[[Excelを最小(大)化する]]\n[[■処理中は画面描画や自動計算を停止する。]]\n[[マクロの動きを見せない]]
[[Enterを押した時に移動する方向を変える]]\n[[マクロでスロールエリアを設定する方法(行列)]]\n[[スクロールできる範囲を指定する(セル指定)]]\n[[オートシェイプで作った図形や線などをセル範囲で指定して削除]]
★[[エクセルのファイルを開いた時にフォームを同時に出す]]\n----\n★[[ユーザーフォームを閉じる]]\n----\n★[[ユーザーフォームのタイトルバーを消す]]\n----\n★[[フォームの(×)を表示しない]]\n----\n★[[ユーザーフォームを出して、数秒後に消す]]\n----\n★[[何よりも先にユーザーフォームを表示]]\n----\n★[[フォームを開いたままで、シートに書き込んでいくには?]]\n----\n★[[[×]をクリックしたとき[キャンセル]ボタンを押したことにしたい]]
[[セルの選択・参照]]\n[[変数を使用して_1]]\n[[変数を使用して_2]]\n[[前の行をコピーするマクロ ]]\n[[セルが空白なら上のセル値を代入]]\n[[新規データ入力位置の取得]]\n[[選択された文字列の取得と設定]]\n\n[[フィルタオプションによるデータ抽出]]\n\n[[行の自動的ハイライト1]]\n\n
★[[マクロ実行権限]]\n----\n★[[パスワードで保護されたEXCEL]]\n----\n
[[氏名一覧から無作為に抽選する]]\n[[フォームの上にグラフを表示]]\n[[キー変換]]\n[[カレンダーコントロール]]\n[[音声を発する]]\n[[日本語・英語を読み上げる1]]\n[[OnKeys]]\n[[ズームの設定]]\n[[スクロールの設定]]
GtdMenuMain6
[[検証中]]
[[■ショートカットキー]]\n[[■変数宣言]]\n[[■条件分岐処理1]]\n[[■条件分岐処理2]]\n[[■繰り返し処理1]]\n[[■繰り返し処理2]]
[[メッセージボックスを表示する]]
<<top>>\n<<toggleSideBar>><<renameButton '>' >>\n<<jump j '' top>>\n<<saveChanges>><<renameButton s 'TiddlyWikiを保存'>>\n<<newTiddler>><<renameButton n>>\n
/***\n|Name|HoverMenuPlugin|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#HoverMenuPlugin|\n|Version|1.11|\n|Requires|~TW2.x|\n!Description:\nProvides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.\n\n!Demo:\nObserve the hovering menu on the right edge of the screen.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nTo customize your HoverMenu, edit the HoverMenu shadow tiddler.\n\nTo customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!\n\nThe menu has an id of hoverMenu, in case you want to style the buttons in it using css.\n\n!Notes:\nSince the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.\n\nIf you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.\n\n!To Do:\n* rework code to allow multiple hovering menus in different positions, horizontal etc.\n* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu\n\n!History:\n*03-08-06, ver 1.11: fixed error with button tooltips\n*27-07-06, ver 1.1 : added JumpMacro to hoverMenu\n*23-07-06\n\n!Code\n***/\n\n/***\nstart HoverMenu plugin code\n***/\n//{{{\nconfig.hoverMenu={};\n//}}}\n\n/***\nHoverMenu configuration settings\n***/\n//{{{\nconfig.hoverMenu.settings={\n align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left' \n x: 1, // horizontal distance of menu from side of screen, increase to your liking.\n y: 158 //vertical distance of menu from top of screen at start, increase or decrease to your liking\n };\n//}}}\n\n//{{{\n//continue HoverMenu plugin code\nconfig.hoverMenu.handler=function()\n{\n var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");\n theMenu.setAttribute("refresh","content");\n theMenu.setAttribute("tiddler","HoverMenu");\n var menuContent = store.getTiddlerText("HoverMenu");\n wikify(menuContent,theMenu);\n\n var Xloc = this.settings.x;\n Yloc =this.settings.y;\n var ns = (navigator.appName.indexOf("Netscape") != -1);\n function SetMenu(id)\n {\n var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];\n if(document.layers)GetElements.style=GetElements;\n GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};\n GetElements.x = Xloc;\n GetElements.y = findScrollY();\n GetElements.y += Yloc;\n return GetElements;\n }\n window.LoCate_XY=function()\n {\n var pY = findScrollY();\n ftlObj.y += (pY + Yloc - ftlObj.y)/15;\n ftlObj.sP(ftlObj.x, ftlObj.y);\n setTimeout("LoCate_XY()", 10);\n }\n ftlObj = SetMenu("hoverMenu");\n LoCate_XY();\n};\n\nwindow.old_lewcid_hovermenu_restart = restart;\nrestart = function()\n{\n window.old_lewcid_hovermenu_restart();\n config.hoverMenu.handler();\n};\n\nsetStylesheet(\n"#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button {width:100%; text-align:center}"+\n"#hoverMenu { position:absolute; width:7px;}\sn"+\n"\sn","hoverMenuStyles");\n\n\nconfig.macros.renameButton={};\nconfig.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n\n if (place.lastChild.tagName!="BR")\n {\n place.lastChild.firstChild.data = params[0];\n if (params[1]) {place.lastChild.title = params[1];}\n }\n};\n\nconfig.shadowTiddlers["HoverMenu"]="<<top>>\sn<<toggleSideBar>><<renameButton '>' >>\sn<<jump j '' top>>\sn<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\sn<<newTiddler>><<renameButton n>>\sn";\n//}}}\n//end HoverMenu plugin code\n\n//Start ToggleSideBarMacro code\n//{{{\nconfig.macros.toggleSideBar={};\n\nconfig.macros.toggleSideBar.settings={\n styleHide : "#sidebar { display: none;}\sn"+"#contentWrapper #displayArea { margin-right: 1em;}\sn"+"",\n styleShow : " ",\n arrow1: "≪",\n arrow2: "≫"\n};\n\nconfig.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var tooltip= params[1]||'toggle sidebar';\n var mode = (params[2] && params[2]=="hide")? "hide":"show";\n var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;\n var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;\n var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");\n if (mode == "hide")\n { \n (document.getElementById("sidebar")).setAttribute("toggle","hide");\n setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");\n }\n};\n\nconfig.macros.toggleSideBar.onToggleSideBar = function(){\n var sidebar = document.getElementById("sidebar");\n var settings = config.macros.toggleSideBar.settings;\n if (sidebar.getAttribute("toggle")=='hide')\n {\n setStylesheet(settings.styleShow,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","show");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);\n }\n else\n { \n setStylesheet(settings.styleHide,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","hide");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);\n }\n\n return false;\n}\n\nsetStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\sn","ToggleSideBarButtonStyles");\n//}}}\n//end ToggleSideBarMacro code\n\n//start JumpToTopMacro code\n//{{{\nconfig.macros.top={};\nconfig.macros.top.handler=function(place,macroName)\n{\n createTiddlyButton(place,"^","jump to top",this.onclick);\n}\nconfig.macros.top.onclick=function()\n{\n window.scrollTo(0,0);\n};\n\nconfig.commands.top =\n{\n text:" ^ ",\n tooltip:"jump to top"\n};\n\nconfig.commands.top.handler = function(event,src,title)\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpToStartMacro code\n\n//start JumpMacro code\n//{{{\nconfig.macros.jump= {};\nconfig.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var label = (params[0] && params[0]!=".")? params[0]: 'jump';\n var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';\n var top = (params[2] && params[2]=='top') ? true: false; \n\n var btn =createTiddlyButton(place,label,tooltip,this.onclick);\n if (top==true)\n btn.setAttribute("top","true")\n}\n\nconfig.macros.jump.onclick = function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var top = theTarget.getAttribute("top");\n var popup = Popup.create(this);\n if(popup)\n {\n if(top=="true")\n {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);\n createTiddlyElement(popup,"hr");}\n \n story.forEachTiddler(function(title,element) {\n createTiddlyLink(createTiddlyElement(popup,"li"),title,true);\n });\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.jump.top = function()\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpMacro code\n\n//utility functions\n//{{{\nPopup.show = function(unused,slowly)\n{\n var curr = Popup.stack[Popup.stack.length-1];\n var rootLeft = findPosX(curr.root);\n var rootTop = findPosY(curr.root);\n var rootHeight = curr.root.offsetHeight;\n var popupLeft = rootLeft;\n var popupTop = rootTop + rootHeight;\n var popupWidth = curr.popup.offsetWidth;\n var winWidth = findWindowWidth();\n if (isChild(curr.root,'hoverMenu'))\n var x = config.hoverMenu.settings.x;\n else\n var x = 0;\n if(popupLeft + popupWidth+x > winWidth)\n popupLeft = winWidth - popupWidth -x;\n if (isChild(curr.root,'hoverMenu'))\n {curr.popup.style.right = x + "px";}\n else\n curr.popup.style.left = popupLeft + "px";\n curr.popup.style.top = popupTop + "px";\n curr.popup.style.display = "block";\n addClass(curr.root,"highlight");\n if(config.options.chkAnimate)\n anim.startAnimating(new Scroller(curr.popup,slowly));\n else\n window.scrollTo(0,ensureVisible(curr.popup));\n}\n\nwindow.isChild = function(e,parentId) {\n while (e != null) {\n var parent = document.getElementById(parentId);\n if (parent == e) return true;\n e = e.parentNode;\n }\n return false;\n};\n//}}}
[[TiddlyWiki Style_WikiStyleさん]]\n\n*[[TiddlyWikiのススメ|http://hsj.jp/junknews/archives/tiddlywiki_susume.html]]\n**[[どなどな|http://hsj.jp/]]さん\n*[[PamGau|http://hp.vector.co.jp/authors/VA034576/sample/tiddlywiki.html]]\n**[[kyorecoba|http://pamgau.net/]]さん\n*[[素敵なTiddlyWiki - カスタマイズノート|http://www.geocities.jp/potto372/tiddlywiki/tiddlywikinote.html]]\n**[[ぽっと|http://potto.exblog.jp/]]さん\n*[[各種メモ - tsupo の第5のメモ|http://www.na.rim.or.jp/~tsupo/wiki/]]\n**[[tsupo|http://www.na.rim.or.jp/~tsupo/tsupo.shtml]]さん\n*[[HiranosoSaiin|http://www.geocities.co.jp/MusicHall/1975/]]\n**Horiさん\n*[[cocoaNote:|http://www.big.or.jp/~crane/cocoa/cocoaNote/cocoaNote.html]]\n**[[crane|http://www.big.or.jp/~crane/]]さん\n*[[TiddlyWiki Style|http://www.geocities.jp/wikistyle/]]\n**~WikiStyleさん\n*[[WikiSample|http://www1.tcnet.ne.jp/leo/Files/TiddlyWiki/TiddlyWiki.html]]\n**[[Leo|http://blog2.fc2.com/leo/]]さん\n\n!TiddlyWiki関連情報\n*[[KamiWiki|http://rakusai.org/kamiwiki/]]\n**[[洛西一周|http://rakusai.org/]]さん\n*[[TiddlyWiki関連リンク集|http://blog.livedoor.jp/kyorecoba/archives/26481931.html]]\n**[[kyorecoba|http://pamgau.net/]]さん\n*[[unisonDiary|http://d.hatena.ne.jp/unison/searchdiary?word=%2a%5bTiddlyWiki%5d]]\n**[[unison|http://d.hatena.ne.jp/unison/]]さん
//{{{\n// ListTag\n// FAQ作成等に便利なタグ指定リスト作成マクロ\n//\n// {{{<<list tag FAQ FAQ一覧>>}}}と書くと、「FAQ」タグのついたtiddlerのタイトル一覧を表示する\n//\nconfig.macros.list.tag = {};\nconfig.macros.list.org_handler = config.macros.list.handler;\nconfig.macros.list.handler = function(place,macroName,params)\n{\n var type = params[0] ? params[0] : "all";\n if (type == "tag") {\n this[type].prompt = params[2];\n }\n config.macros.list.org_handler(place,macroName,params);\n}\n\nconfig.macros.list.tag.handler = function(params) { \n return store.getTaggedTiddlers(params[1], "title");\n};\n//}}}
\n!説明\n引数で指定したタグがついた記事を一覧表示します。\nFAQの目次作成を自動化したくて作りました。\n!書式\n{{{\n<<list tag タグ名 タイトル>>\n}}}\n!使用例\n{{{\n<<list tag 組込マクロ 組込マクロ一覧>>\n}}}\n<<list tag 組込マクロ 組込マクロ一覧>>\n!ソース\n<<tiddler ListTagMacro>>
\n!概要\nマクロとはTiddlyWikiの機能拡張方法のひとつで、{{{<<マクロ名 引数>>}}}という書式で利用することができるものです。\n!組込マクロ\nTiddlyWikiは、あらかじめ多くのマクロが用意されており、記事のツールバー、サイドメニュー、タブ表示などはマクロで実現されています。またユーザが利用できるマクロとして以下のようなものが用意されています。\n<<list tag 組込マクロ 組込マクロ>>
    ♪エクセルVBA♪\n<<gtdmenu chkMenuMain GtdMenuMain8 基本>><<gtdmenu chkMenuMain GtdMenuMain1 起動・終了・開く・閉じる>><<gtdmenu chkMenuMain GtdMenuMain15 シート>><<gtdmenu chkMenuMain GtdMenuMain14 画面>><<gtdmenu chkMenuInbox GtdMenuMain2 フォーム>><<gtdmenu chkMenuSchedule GtdMenuMain3 選択・参照>><<gtdmenu chkMenuNextAction GtdMenuMain13 取得>><<gtdmenu chkMenuNextAction GtdMenuMain4 保護>><<gtdmenu chkMenuNextAction GtdMenuMain12 コマンドボタン>><<gtdmenu chkMenuNextAction GtdMenuMain9 メッセージボックス>><<gtdmenu chkMenuNextAction GtdMenuMain10 コンボBOX>><<gtdmenu chkMenuNextAction GtdMenuMain5 Sample サンプルファイル>><<gtdmenu chkMenuNextAction GtdMenuMain6 Cord_of_my_File>><<gtdmenu chkMenuNextAction GtdMenuMain7 検証中>><<gtdmenu chkMenuNextAction GtdMenuMain11 関数>>\n\n\n15まで使用
http://blog.livedoor.jp/andrewj/\n\nこのマクロでキーを押すと選択するマクロが実行します。\n(シートのみ)\n\n{{{\nSub Auto_Open()\n Application.OnKey "{32}", "Macro1"\n Application.OnKey "{13}", "Macro2"\nEnd Sub\n}}}\n{{{\nSub Auto_Close()\n Application.OnKey "{32}"\n Application.OnKey "{13}"\nEnd Sub\n}}}\n{{{\nSub Auto_Close()\n Application.OnKey "{32}"\n Application.OnKey "{13}"\nEnd Sub\n}}}\n{{{\nSub Macro1()\n MsgBox "Macro1 is running."\nEnd Sub\n}}}\n{{{\nSub Macro2()\n MsgBox "Macro2 is running."\nEnd Sub\n}}}\nこの場合は「スペース」のキー(32)を押しと「Macro1」が実行して、「Enter」のキー(13)を押すと「Macro2」が実行します。ファイルを終了すると「Auto_Close」のマクロでキーを既の設定に戻ります。他の開いているファイルにも影響すると注意して下さい。\n[[OnKeys2]]
ファンクションキーなどに任意の文字を割り当てる(シートのみ)\n\n{{{\n' // ファンクションキーに引数付きプロシージャを割当\nSub ShortCutKeysASign()\n  Application.OnKey "{F9}", "'TestProc ""A""'"\n  Application.OnKey "{F10}", "'TestProc ""B""'"\n  Application.OnKey "{F11}", "'TestProc ""C""'"\nEnd Sub\n}}}\n{{{\n' // ファンクションキーを元に戻す\nSub ShortCutKeysRestore()\n  Application.OnKey "{F9}"\n  Application.OnKey "{F10}"\n  Application.OnKey "{F11}"\nEnd Sub\n}}}\n{{{\n' // ファンクションキーで呼び出されるプロシージャ\nSub TestProc(ByVal s As String)\n  ActiveCell.Value = s\nEnd Sub\n}}}\n[[OnKeys]]\n[[OnKeys3]]
アルファベットキーの「a」を押したときに \nプロシージャ「Macor1」を実行します。(シートのみ)\n最初の引数Keyで、\n 割り当てたいキーを中カッコで括って文字列で指定し、\n2番目の引数Procedureで \n 割り当てたキーが押したときに、実行したいプロシージャを文字列で指定\n{{{\nSub Appl_Sa8()\n\n Application.OnKey "{a}" "Macro1"\n\nEnd Sub\n}}}\n\n 「a」Keyを押すたびに、マクロが実行されてしまっては大変ですね\n登録したショートカットキーを無効にします。\n引数Procedureに、長さ「0」の文字\n列「""」を指定します。\n\n{{{\nSub Appl_Sa9()\n\n Application.OnKey "{a}", ""\n\nEnd Sub\n{{{\n\n「Ctlr」+「C」のように、\n最初から登録されているショートカットキーも OnKeyメソッドを使うと、\n別のプロシージャを登録したり、無効にしたり出来ます。\n他のキーと組み合わせて使用できるキーは、\n「Ctrl」Keyと「Atl」Keyと「Shift」Keyの3つです。\n\n「Ctlr」+「C」で行うコピーを無効にしています。\n{{{\nSub Appl_Sa10()\n\n Application.OnKey "^{c}", ""\n\nEnd Sub\n}}}\nこの3つのシステムキーは、他のキーとすこし指定の仕方が違います。\n下の表を参考にして下さいね。\n\n|!Key|!文字列 |\n|Ctrl|~ |\n|Shift|+|\n|Alt|%|\n\n\n 「Enter」Keyや「Tab」Keyように、キーを押しても見えないキーの指定には、\nキーを表す文字列を「{(中カッコ)」で括って指定します\n\n「Insert」キーを押したときに、プロシージャ「AppearMSG」を実行します。\n{{{\nSub Appl_Sa11()\n\n Application.OnKey "{INSERT}", "AppearMSG"\n\nEnd Sub\n}}}\n{{{\nSub AppearMSG()\n\n MsgBox "keydown 'INSERT'"\n\nEnd Sub\n}}}\n \n\n カーソルキーやファンクションキーを指定するときの文字列です。\n\n|!Key|!文字列|!Key|!文字列|\n|BackSpace|{BACKSPACE}{BS}|PageDown|{PGDN}|\n|Ctrl+Break|{BREAK}|PageUp|{PGUP}|\n|Caps Lock|{CAPSLOCK}|ScrollRock|{SCROLLLOCK}|\n|Delete|{DELET}{DEL}|Tab|{TAB}|\n|End|{END}|↑|{UP}|\n|Enter(テンキー)|{ENTER}|↓|{DOWN}|\n|Enter|~(チルダ)/{RETURN}|←|{LEFT}|\n|Esc|{ESCAPE} {ESC}|→|{RIGHT}|\n|Insert|{INSERT}|NumLock|{NUMLOCK}|\n|Home|{HOME}|F1~F12|{F1}~{F12}|\n\n 最後に、ユーザーが登録したプロシージャを解除して、\nもとのショートカットキーに戻す方法です。\n2番目の引数Procedureを、全く指定しないで OnKeyメソッドを実行します。\n\n{{{\nSub Appl_Sa13()\n\n Application.OnKey "^{c}"\n\nEnd Sub\n}}}\n[[OnKeys]]\n[[OnKeys2]]
これらの設定はご使用のブラウザ内に保存されます。\n\n署名として使用するあなたの名前をWikiWord形式(例 JoeBloggs)で入力してください。\n\n<<option txtUserName>>\n<<option chkSaveBackups>> バックアップ作成\n<<option chkAutoSave>> 自動保存\n<<option chkRegExpSearch>> 正規表現による検索\n<<option chkCaseSensitiveSearch>> 英文字大小区別検索\n<<option chkAnimate>> アニメーション\n<<option chkSingleTiddlerMode>> 単一記事表示モード\n----\n[[詳細な設定|AdvancedOptions]]\n[[プラグイン|PluginManager]]\nImportTiddlers
<<plugins>>
(1)SUMIF関数\nSUMIF関数はある条件のものの合計を求めます。\n\n下図の例は、A列B列に担当者ごとの売上データがあり、\nD列E列に集計しようとしています。\n\nセルE2に担当[佐藤]の売上合計[400]が答えとして表示されます。\n\n[img[img/vba05_1.jpg]]\n\n\n(2)SUMPRODUCT関数\nSUMPRODUCT関数は配列の積の和を計算します。\n\n下図の例は、A列B列C列に担当者商品ごとの売上データがあり、\nE列F列G列に集計しようとしています。\n\nセルG2に特定の担当者[佐藤]の特定の商品[ポテトチップス]の売上合計が\n答えとして表示されます。\n\n結果として、[複数の条件でSUMIF]になります。\n\n[img[img/vba05_2.jpg]]\n\n\n補足説明:セルG2の計算は↓の式を計算しているわけです。\n\n  佐藤 木村 山田 木村 佐藤 木村 森口\n 1*1*300+0*0*100+0*0*300+0*1*200+1*1*100+0*0*200+0*0*200 = 400\n ↑売上300\n ↑商品が合致しているので 1\n↑名前が佐藤と合致しているので 1\n\n
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options ≫' 'Change TiddlyWiki advanced options'>>
<<tabs txtMenutab\nTiddly "Tiddly" [[TiddlyWiki]]\nリンク "資料" [[Link]]\nマクロ "マクロ&パッチ" [[ ]]\nTips "Tips" [[Tips]]\n>>\n
<<tabs txtMainTab Timeline Timeline TabTimeline All 'All tiddlers' TabAll Tags 'All tags' TabTags More 'More lists' TabMore>>\n\n
/***\n\n ~SingleTiddlerModePlugin - 単一記事表示モードプラグイン\n\n!説明\n 記事を開くとそれまで開いていた記事が閉じて、常に一つの\n 記事しか開かないモードです。以下のような記述をAdvancedOptions\n あたりに書いておくと、このモードのON/OFFが切り替えられます。\n\n {{{<<option chkSingleTiddlerMode>> Single Tiddler Mode}}}\n\n''インストール''\n この記事の内容をペースト、systemConfigタグを付けて保存、リロード。\n***/\n//{{{\nif (config.options.chkSingleTiddlerMode == undefined)\n config.options.chkSingleTiddlerMode = true;\n\njavascript:(\n function() {\n if (config.options.chkSingleTiddlerMode) {\n Story.prototype.org_displayTiddler = Story.prototype.displayTiddler;\n Story.prototype.displayTiddler = closeAndDisplayTiddler;\n }\n\n function closeAndDisplayTiddler(srcElement,title,template,animate,slowly)\n {\n if (config.options.chkSingleTiddlerMode)\n story.closeAllTiddlers();\n story.org_displayTiddler(srcElement,title,template,animate,slowly);\n }\n\n }\n\n)();\n\n//}}}\n
[img[img/anicat2.gif]]
Maya's TiddlyWiki
\n!概要\nスライダーマクロは[[TiddlerMacro - 他記事の引用]]と同様に他の記事の内容をインラインで表示しますが、スライダーの場合は表示内容を折りたたみ/展開できるという特徴があります。サイドバーの「設定」で使用されています。\n!書式\n{{{\n<<slider cookieName tiddlerTitle sliderTitle tooltipText>>\n}}}\n|!引数|!意味|\n|cookieName|折りたたみ/展開の状態をcookieとして保存するための名前。他のcookieと重複せず、先頭に「chk」がついた名前にする必要があります|\n|tiddlerTitle|引用する記事のタイトル|\n|sliderTitle|スライダーの表示名|\n|tooltipText|スライダーのツールチップ文字列|\n\n!使用例\n{{{\n<<slider chkSampleSlider MainMenu "メニュー" "メインメニュー内容表示">>\n}}}\n<<slider chkSampleSlider MainMenu "メニュー" "メインメニュー内容表示">>\n
/*{{{*/\nSPAN#siteTitle{\nfont-family: sans-serif;\n}\n/*}}}*/\n/*{{{*/\n/*タイトル*/\n.titleLine {\nbackground-color:#ffffff;\nbackground-image:url(03-1.jpg);\nbackground-position:left;\nbackground-repeat:no-repeat;\nheight:150px;\n padding: 20px 20px 10px 0;\n margin:0;\n color: #000000;\n text-align:right;\n}\n/*}}}*/\n/*{{{*/\nDIV#mainMenu{\npadding: 1px;\ntext-align: left;\n}\n/*}}}*/\n/*{{{*/\n/*Tiddlerの表題設定*/\nDIV.title{\nfont-size:large;\nborder: 2px solid #FFFFFF;\ncolor: #FFFFFF;\nbackground-color: #063;\npadding-left: 8px;\npadding-right: 16px;\n}\n/*}}}*/\n/*{{{*/\n.header {\n background: :#eee;\n border-bottom: 1px solid #999;\n font-weight: bold;\n}\n/*}}}*/\n/*{{{*/\n.headerShadow {\n color: [[ColorPalette::TertiaryLight]];\n left: 2px;\n top: 2px;\n}\n/*}}}*/\n/*{{{*/\n.body {\nfont-family: "arial","verdana","sans-serif";\nfont-size:medium;\nfont-weight:normal;\nline-height:100%;\npadding-left:10px;\npadding-right:10px;\npadding-top:10px;\nletter-spacing:1px;\nbackground-color: #FFFFFF;\nborder-color: #f0f0cc;\n}\n/*}}}*/\n/*{{{*/\n.tiddler {\nborder-top: solid 1px #ccc;\nborder-left: solid 1px #ccc;\nborder-right: solid 3px #aaa;\nborder-bottom: solid 3px #aaa;\npadding: 1em 1em 1em 1em;\nmargin: 0em 1em 2em 1em;\nbackground: ffffcc;\ncolor: 333366;\nwidth: 50em;\n-moz-border-radius: 1.0em;\n}\n/*}}}*/
/***\n!使用色サンプル\n*@@bgcolor(#cfc): #cfc - Highlight green@@\n*@@bgcolor(#9fc): #9fc - Light green@@\n*@@bgcolor(#9f9): #9f9 - Background green@@\n*@@bgcolor(#9c9): #9c9 - Border green@@\n*@@bgcolor(#696):color(#fff): #696 - Top green@@\n*@@bgcolor(#063):color(#fff): #063 - Mid green@@\n*@@bgcolor(#030):color(#fff): #030 - Bottom green@@\n*@@bgcolor(#fcc): #fcc - Highlight@@\n\nborder: 1px    dotted   #999;\n 線  1ピクセル 点線   色#999\n\n background: 背景\n\nh1,h2,h3,h4,h5 { \n color: #030;        文字色 #30\n /* background: #9f9; */  背景色 #9f9\n padding-top: 0.5ex;\n border-bottom: 1px solid #9f9;\n border-left: 1em solid #9f9;\n\n!一般定義 /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #063;\n}\n\na:hover{\n background: #063;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #030;\n /* background: #9f9; */\n padding-top: 0.5ex;\n border-bottom: 1px solid #9f9;\n border-left: 1em solid #9f9;\n}\n\n.button {\n color: #030;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #030;\n background: #9f9;\n border: 1px solid #696;\n}\n\n.button:active {\n color: #9f9;\n background: #696;\n border: 1px solid #063;\n}\n\n/*}}}*/\n/***\n!ヘッダ /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #063;\n}\n\n.headerShadow {\n color: #030;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #030;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #9f9;\n}\n\n/*}}}*/\n/***\n!メインメニュー /%==================================================%/\n***/\n/*{{{*/\n#mainMenu {\n border: 1px dotted #999;\n}\n\n/*}}}*/\n/***\n!タブ /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #030;\n background: #cfc;\n border-left: 1px solid #9c9;\n border-top: 1px solid #9c9;\n border-right: 1px solid #9c9;\n font-weight: bold;\n}\n\n.tabUnselected {\n color: #fff;\n background: #9c9;\n}\n\n.tabContents {\n color: #030;\n background: #cfc;\n border: 1px solid #9c9;\n}\n\n.tabContents .button {\n border: 0;\n}\n\n/*}}}*/\n/***\n!サイドバー /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #063;\n}\n\n#sidebarOptions .sliderPanel {\n background: #cfc;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #063;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #063;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #063;\n background: #fff;\n}\n/*}}}*/\n/***\n!メッセージ領域 /%=================================================%/\n***/\n/*{{{*/\n\n#messageArea {\n border: 1px solid #9c9;\n background: #696;\n color: #9f9;\n}\n\n\n#messageArea a {\n color: #9f9;\n}\n\n#messageArea .button {\n color: #063;\n background: #cfc;\n}\n\n/*}}}*/\n/***\n!ポップアップ /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #9f9;\n border: 1px solid #9c9;\n}\n\n.popup hr {\n color: #030;\n background: #030;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #063;\n}\n\n.popup li a, .popup li a:visited {\n color: #063;\n border: none;\n}\n\n.popup li a:hover {\n background: #063;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler表示 /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #063;\n}\n\n.title {\n color: #030;\n}\n\n.subtitle {\n color: #063;\n}\n\n.toolbar {\n color: #063;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n border: 1px solid #ccc;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #030;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #9fc;\n border: 0;\n}\n\n.sparktick {\n background: #030;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.viewer {\n border: \n}\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #9f9;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #ccc;\n border: 1px solid #666;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #9c9;\n background: #cfc;\n}\n\n.viewer code {\n color: #030;\n}\n\n.viewer hr {\n border: 0;\n border-top: 1px dashed #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fcc;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #063;\n}\n\n.editor textarea {\n border: 1px solid #063;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n border: 0;\n}\n\n.externalLink {\n text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 14.5em;\n text-align: right;\n line-height: 1.4em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n.wizard {\n padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n font-size: 2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n font-size: 1.2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n margin: 0.5em 0em 0em 0em;\n font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n line-height: 1px;\n}\n\n.listBreak div {\n margin: 2px 0;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer table.listView {\n font-size: 0.85em;\n margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
/*{{{*/\n@media print {\n#mainMenu, #sidebar, #messageArea, .toolbar {display: none ! important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */\nnoscript {display:none;}\n}\n/*}}}*/
<<list orphans>>
<<timeline>>
This WorkBook のプロパティ\n\n \n|(オブジェクト名)|Nameプロパティ||         |\n|AcceptLabelsInFormulas||TRUE|シートの数式でラベルを使用できます|\n|AutoUpdateFrequency|>|>|共有ブックの自動更新の間隔を分で設定します。このプロパティに 0 を設定すると、このブックを保存するときだけ更新が行われます。使用できる範囲は、5 ~ 1440 の値です。|\n|ChangeHistoryDuration|>|>|共有ブックの変更履歴に示される日数を設定|\n|ConflictResolution|共有ブックが更新されるたびに重複する内容の解決方法を設定|xlLocalSessionChanges|ローカル ユーザーの変更を必ず受理します|\n|~|~|XlOtherSessionChanges|ローカル ユーザーの変更を必ず拒絶します|\n|~|~|XlUserResolution|ユーザーが重複を解決するように要求します|\n|Date1904||TRUE|対象ブックの日付を 1904 年から計算|\n|DisplayDrawingObjects|描画オブジェクトの表示方法を設定|xlDisplayShapes|描画オブジェクトをすべて表示|\n|~|~|xlPlaceholders|描画オブジェクトの位置のみ表示|\n|~|~|xlHide|描画オブジェクトをすべて非表示|\n|EnvelopeVisible||TRUE|電子メールの構成ヘッダーと [封筒] ツールバーを表示|\n|HasRoutingSlip||TRUE|ブックに回覧先を設定|\n|HighlightChangesOnScreen||TRUE|共有ブックに加えた変更箇所を画面に強調表示|\n|IsAddin||TRUE|ブックをアドインとして実行|\n|KeepChangeHistory||TRUE|共有ブックの変更履歴の作成が可能になります|\n|ListChangesOnNewSheet||TRUE|共有ブックへの変更内容を、別のワークシートに表示|\n|PersonalViewListSettings||TRUE|フィルタの設定が共有ブックのユーザーの個人用ビューに含まれます|\n|PersonalViewPrintSettings||TRUE|共有ブックのユーザーの個人用ビューに印刷の設定を含みます|\n|PrecisionAsDisplayed||TRUE|対象ブックを表示桁数で計算します。値の取得および設定が可能|\n|Saved||TRUE|ブックは最後の保存した状態から変更が加えられていません|\n|SaveLinkValues||TRUE|対象ブックが外部リンクの値を保存します|\n|ShowConflictHistory||TRUE|共有ファイルとして開かれているブックで、コンフリクトの履歴のワークシートを表示しています|\n|TemplateRemoveExtData||TRUE|テンプレートがブックとして保存されるとき、外部データ参照を削除します|\n|UpdateRemoteReferences||TRUE|対象ブックのリモート参照を更新します。|
[[はじめまして♪]]\n[[早速使ってみる]]\n[[DownloadSoftware]] \n\n[[書き方(詳細)]]\n[[イメージの表示]] \n[[カスタマイズする]]\n[[テーブルの作成方法]]\n[[外部公開Tips]] \n[[BrMacro - 改行]]\n[[引用]] \n[[書式]] \n[[箇条書きの書き方]] \n[[リンクの張り方]]\n[[GradientMacro - グラデーション装飾]]\n\n[[カスタマイズする]]\n[[スタイルシート設定の分割管理]]\n[[SingleTiddlerModePlugin - 単一記事表示モード]]\n[[色見本]]\n[[TiddlyWikiのホスティングサービス]]\n[[AutoCloseMessagePlugin - 時限メッセージダイアログ]]\n[[自動リンク抑止]]\n[[エスケープ]]
http://www.geocities.jp/wikistyle/\n[[AutoCloseMessagePlugin - 時限メッセージダイアログ]]\n[[TodayMacro - 日付表示]]\n[[ListTagMacro - 記事タイトル一覧(タグ指定)]]
TiddlyWikiのホスティングサービス\nTiddlyWikiを簡単に利用できるサービスがあります。自分でサーバを用意せずに、ユーザ名の登録で即日から自分のアドレスで利用できます。パスワードの知っているもの同士でWeb上から編集が可能です。また非公開にすることも可能です。解約はWeb上からできないので注意して下さい。\n\ntiddlyspot\n\n?メモ?\n\n\n\nユーザ名がそのままアドレスになります。ユーザ名は考えてから入力した方がよさそうです。\n\nWebからの解約ができません。メールでサポートに連絡する必要があります。\n\n写真等の画像のアップロードができません。\n\nスタイルの変更は、ローカルの環境にダウンロードし、通常の変更をおこなった後にアップロードすると可能です。(今度、機会があれば説明しますね)\n\n
!TiddlyWikiデフォルト名\n\nTiddlyWikiのシステム管理のために用意されている名前です。\nこの名前で編集をすることによって、外観や表示などを変更が可能です。\n\n|デフォルトのTiddlyWiki名|意味|\n|SiteTitle|サイトタイトル|\n|SiteSubtitle|サイトサブタイトル|\n|DefaultTiddlers|起動時に表示する項目|\n|MainMenu|左側のメニュー|\n|StyleSheet|スタイルシートを記述すると表示を変えることができます。|\n\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>
''★Main プルダウンメニュー★''\n[[基本|GtdMenuMain8]]\n[[起動・終了・開く・閉じる|GtdMenuMain1]]\n[[フォーム|GtdMenuMain2]]\n[[選択・参照|GtdMenuMain3]]\n[[取得|GtdMenuMain13]]\n[[保護|GtdMenuMain4]]\n[[コマンドボタン|GtdMenuMain4]]\n[[メッセージBOX|GtdMenuMain4]]\n[[コンボBOX|GtdMenuMain10]]\n[[]]\n[[Sample|GtdMenuMain5]]\n[[Cord_of_my_File|GtdMenuMain6]]\n[[検証中|GtdMenuMain7]]\n[[関数|GtdMenuMain11]]\n\n\n\n\n[[MainMenu]]\n[[SideBarTabs]]\n[[SideBarTabs_Shadowed]]\n[[TiddlyWiki]]\n[[Link]]\n[[Tips]]
\n!概要\n今日の日付を表示します。\n!書式\n{{{<<today>>}}}または{{{<<today 日付書式>>}}}\n|!日付書式|!意味|h\n|YYYY|西暦の4桁表記|\n|YY|西暦の2桁表記|\n|wYYYY|~ISO-8601対応週ベース年の4桁表記|\n|wYY|~ISO-8601対応週ベース年の2桁表記|\n|MMM|月名(本サイトでは[[和名|JapaneseTranslation]]にカスタマイズ)|\n|mmm|月名の短縮表記(本サイトでは[[和名|JapaneseTranslation]]でMMMと同じ表記)|\n|0MM|月の2桁数字表記|\n|MM|月の1~2桁数字表記|\n|DDD|曜日(本サイトでは[[和名|JapaneseTranslation]]にカスタマイズ)|\n|ddd|曜日の短縮表記(本サイトでは[[和名|JapaneseTranslation]]でDDDと同じ表記)|\n|0DD|日の2桁数字表記|\n|~DDth|日を1st, 2nd, 3rd, 4th,……形式で表記|\n|DD|日の1~2桁数字表記|\n|0hh|時の2桁表記|\n|hh|時の1~2桁表記|\n|0hh12|時の2桁表記(12時間制)|\n|hh12|時の1~2桁表記(12時間制)|\n|AM<br>PM|午前/午後表記(大文字)|\n|am<br>pm|午前/午後表記(小文字)|\n|0mm|分の2桁表記|\n|mm|分の1~2桁表記|\n|0ss|秒の2桁表記|\n|ss|秒の1~2桁表記|\n!使用例\n{{{\n<<today>>\n<<today "YYYY年0MM月0DD日(DDD)">>\n<<today "YY/MM/DD 0hh:0mm:0ss">>\n<<today "YYYY MMM DDth">>\n<<today "hh12:0mm am">>\n}}}\n<<today>>\n<<today "YYYY年0MM月0DD日(DDD)">>\n<<today "YY/MM/DD 0hh:0mm:0ss">>\n<<today "YYYY MMM DDth">>\n<<today "hh12:0mm am">>\n
この関数はシート"sheet1"のセル"A1"の内容をシート名にして追加します。\nもしセル"A1"に指定する名前がない時はインプットボックスによりメッセージがでます。\n\n\nOption Explicit\n\nSub Sheet_Add()\n  On Error GoTo shadd   'エラーが発生した時の処理。\n  Dim sh As Worksheet   'Worksheetというオブジェクトの変数をshと言う名で宣言します。\n  Dim Name As String    '文字列型の変数 Name を宣言\n \n  Set sh = Worksheets.Add      'シートを追加\n  sh.Name = Sheets("sheet1").Range("A1") 'シート名を変更\n  Exit Sub\n\nshadd:\n  Name = InputBox("シート名を指定してください。")\n  sh.Name = Name 'シート名を変更\nEnd Sub\n\n上のプロシージャ(関数)を実行すると新しいシートは現在のアクティブシートの前に作成されます。\n作成するシートの位置・数や種類を指定することもできます。\n\n\nSet sh = Worksheets.Add(After:=Worksheets(Worksheets.Count)) 'シートの最後に追加します\nSet sh = Worksheets.Add(Before:=Worksheets(Worksheets.Count)) '最後のシート前に追加します\nSet sh = Worksheets.Add(After:=Worksheets(Worksheets.Count),Count:=2)'シートの最後に2つ追加します\n\n"After:=" 指定したシートの直後に新しいワークシートが追加されます。\n"Before:=" 指定したシートの直前に新しいワークシートが追加されます。\n"Count:=" 追加するシートの数を指定します。既定値は 1 です。\n"Type:=" 追加するワークシートの種類を指定します。\n詳しくはヘルプで確認してください。\nこれを応用することでいろいろなことが可能になりますので試してください。\nたとえば作成されているすべてのシートを列挙して指定した名前がなかった時はこの関数で指定した場所へ追加するとかです。 \n\n
<!--{{{-->\n<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='grad' macro='gradient vert #4fb #082'><div class='title' macro='view title'></div></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[YYYY年0MM月0DD日]]'></span> (作成日 <span macro='view created date [[YYYY年0MM月0DD日]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->
UserFormの[×]をクリックしたとき\n[キャンセル]や[閉じる]ボタンを押したイベントを発生する方法\n\n'UserFormモジュール\n'Cancel(終了)ボタン(CommandButton名->cmdCancel)が配置されている例\n\nPrivate Sub cmdCancel_Click()\n MsgBox "cmdCancel_Click" 'ボタンが押された確認用\n '終了時の処理を記述\n '\n Unload Me\nEnd Sub\n\n\n\nPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)\n 'vbFormCode 1 コードからUnloadステートメントが実行された\n If CloseMode <> vbFormCode Then cmdCancel.Value = True '[×]がクリックされた\nEnd Sub\n\n
(1)countifの基本\n\n 下↓のような表のA列に[リンゴ]がいくつ存在するかを求める例\n\n|| A | B  | C | D ||\n|1| 商品 | | 商品 | 個数||\n|2| リンゴ | | リンゴ | 3 |← これを求める|\n|3| オレンジ| | |||\n|4| リンゴ | | |||\n|5| リンゴ | | |||\n\n  この場合関数式は\n  =countif(A2:A5,"リンゴ") で求まります。\n  式の意味:\n   セルA2からA5の範囲が[リンゴ]のものの数を数える\n \n  もちろん\n  =countif(A2:A5,"りんご") や =countif(A2:A5,"apples") では求まりません\n                        ↑(Excel_HELPが間違っている)\n  少し汎用性をもたせて =countif($A$2:$A$5,C2) とする場合が多いです。\n \n  また =sumproduct((A2:A5=C2)*1) でも求まります。\n \n   式の意味:\n    セルA2は[リンゴ]なので1 1*1\n    セルA3は[オレンジ]なので0 0*1\n    セルA4は[リンゴ]なので1 1*1\n    セルA5は[リンゴ]なので1 1*1\n     従って1*1 + 0*1 + 1*1 + 1*1 --> 1 + 0 + 1 + 1 --> 3 となります。\n\n--------------------------------------------------------------------------------\n(2)countifで複数条件\n\n 下↓のような表のA列が[リンゴ]でB列が[中]のものがいくつ存在するかを求める例\n\n|| A | B | C | D | E | F||\n|1| 商品 |大きさ| | 商品 |大きさ|個数||\n|2| リンゴ | 大 | | リンゴ | 中 | 1 |← これを求める|\n|3| オレンジ| 中 | | | |||\n|4| リンゴ | 中 | | | |||\n|5| リンゴ | 大 | | | |||\n\n  このような場合countifでは求められないので\n \n  =sumproduct((A2:A5="リンゴ")*(B2:B5="中")) 又は\n  \n  =sumproduct((A2:A5=D2)*(B2:B5=E2)) で求まります。\n \n   式の意味:\n    セルA2は[リンゴ]なので1 かつ セルB2は[大]なので0 1*0\n    セルA3は[オレンジ]なので0 かつ セルB3は[中]なので1 0*1\n    セルA4は[リンゴ]なので1 かつ セルB4は[中]なので1 1*1\n    セルA5は[リンゴ]なので1 かつ セルB5は[大]なので0 1*0\n     従って1*0 + 0*1 + 1*1 + 1*0 --> 0 + 0 + 1 + 0 --> 1 となります。\n \n  少し汎用性をもたせて =sumproduct(($A$2:$A$5=D2)*($B$2:$B$5=E2)) とする\n  場合が多いです。\n\n 【sumproduct以外の方法】\n \n   (a)C列に =A2&B2 でA列とB列を連結しておいて\n     =countif(C2:C5,D2&E2) のような方法も可能です。\n   \n   (b)配列数式を使う。\n    =sum(if(($A$2:$A$5=D2)*($B$2:$B$5=E2),1))\n    数式を入力してCtrl+Shift+Enter\n   \n   (c)データベース関数dcountaを使う。\n    =dcounta(A1:B5,1,D1:E2)\n\n--------------------------------------------------------------------------------\n(3)sumproduct\n\n  sumproduct(<配列1>,<配列2>,<配列3>)\n \n  基本的には配列の積を求めるための関数です。\n \n|| | A | B | C | D | E|\n|1| 3 | 4 | | 2 | 7 ||\n|2| 8 | 6 | | 6 | 7 ||\n|3| 1 | 9 | | 5 | 3 ||\n\n  =sumproduct(A1:B3, D1:E3) --> 156\n  計算している内容は 3*2 + 4*7 + 8*6 + 6*7 + 1*5 + 9*3 --> 156\n\n--------------------------------------------------------------------------------\n(4)ワンポイント\n\n  (a)A列やB列が数値データで条件をつける場合\n    =sumproduct((A2:A5>500)*(B2:B5<=100))\n    A列が500より大で かつ B列が100以下 の個数\n
tiddlerの表題の設定。\nStyleSheetというtiddlerに以下を記述。----\n{{{\nDIV.title{\nfont-size:large;\nborder: 2px solid #996633;\ncolor: #FFFFFF;\nbackground-color: #996633;\npadding-left: 8px;\npadding-right: 16px;\n}\n\n}}}\n----\n
|Ctrl + N |新規作成 ||F1 |ヘルプを表示する|\n|Ctrl + O |開く ||F2 |アクティブセルを編集する|\n|Ctrl + S |上書き保存 ||F4 |直前の動作を繰り返す|\n|Ctrl + F12 |名前を付けて保存 ||F5 |「編集」メニューの「ジャンプ」を選択する|\n|Ctrl + P |印刷 ||F9 |シートデータの再計算をする|\n|Ctrl + A |全てを選択 ||F11 |グラフの作成|\n|Ctrl + X |切り取り |\n|Ctrl + C |コピー |\n|Ctrl + V |貼り付け |\n|Ctrl + D |上のセルのコピー&貼り付け |\n|Ctrl + R |左のセルのコピー&貼り付け |\n|Ctrl + Z |元に戻す |\n|Ctrl + Y |繰り返し |\n|Ctrl + K |ハイパーリンク |\n|Ctrl + * |表全部を選択 |\n|Ctrl + Shift + ! |桁区切りスタイル |\n|Ctrl + Shift + @ |計算式を表示 |\n|Ctrl + Shift + ’ |式のコピー |\n|Ctrl + 「+」 |行の追加 |\n|Ctrl + 「-」 |行の削除 |\n|Ctrl + 「Pagedown」 |次のシートへ移動 |\n|Ctrl + 「Pageup」 |前のシートへ移動 |\n\n \n\n\n\n
長い時間が掛かるような処理では、この点に配慮するだけで\n極端に時間短縮できる場合があります。\n\n以下のプロパティで制御します。\n\n★マクロ動作でシートやウィンドウが切り替わるのを見せないようする\n{{{\nApplication.ScreenUpdating = False\n}}}\nを記述すると、画面描画が停止します。\nこれ以降セルにデータを貼ったり、シートを切り替えたり、\n他のブックを開いたりしても画面には表示されません。\n処理の終了段階でTrueに戻して下さい。 \n\nマクロ動作自体で別のイベントが生成されるのを抑制する。\n{{{\nApplication.EnableEvents = False\n}}}\nを記述すると、以降マクロの動作が起因するイベント発生を抑制できます。\n処理の終了段階でTrueに戻して下さい。\n \nマクロ動作でセル値などが変わる時自動計算が処理を遅くするのを避ける。\n{{{\nApplication.Calculation = xlCalculationManual\n}}}\nを記述すると、計算方法が「手動」に切り替わります。\n計算式が貼られたシートに順次データを置いていくような処理では、\n「自動」のままで処理すると非常に時間がかかってしまいます。\n「手動」で動作させると十数倍速くなる例もあるので試して下さい。\n処理の終了段階でxlCalculationAutomaticに戻して下さい。 \n\n\nマクロ動作中に一切のキーやマウス操作を制限する。\n{{{\nApplication.Interactive = False\n}}}\nを記述すると、処理中はキーボードやマウス等の介入が一切排除されます。\n当然Escキーでマクロ動作を停止させることもできなくなります。\n処理の終了段階でTrueに戻して下さい。\n\n但し、この状態で何らかの理由でマクロが停止してしまうと、\nExcel自体は何も操作できない状態になってしまい、\nタスクマネージャで強制終了させなければならなくなります。\nこの記述だけは確実に動作検証が終わってから設定して下さい。\n \nマクロ動作中はマウスカーソルを「砂時計」にする。\n{{{\nApplication.Cursor = xlWait\n}}}\nを記述すると、Excelのウィンドウ内はカーソルが「砂時計」になります。\n処理の終了段階でxlDefaultに戻して下さい。\nこれはカーソル形状だけの操作なので、もし実行時エラーなどが発生して元に戻せなくても「砂時計」のままでマウスは問題なく操作できます。 \n\n
 (この場合は変数x)\n|Dim x As Integer| 整数型 |(-32,768~32,767)|\n|Dim x As Long| 長整数型 |(-2,147,483,648~2,147,483,647)|\n|Dim x As Byte| バイト型 |(0~255)|\n|>|>| |\n|Dim x As Boolean| ブール型 |(真True/偽False)|\n|Dim x As String| 文字列型 ||\n|>|>| |\n|Dim x As Single| 実数型 ||\n|Dim x As Double| 長実数型||\n|>|>| |\n|Dim x As Currency| 通貨型||\n|Dim x As Date| 日付型||\n|>|>| |\n|Dim x As Object| オブジェクト型||\n|Dim x As Variant| バリアント型(全てのデータ)||\n\n\n■変数\n○変数の宣言 (この場合は変数x)\nDim x As Integer  '整数型(-32,768~32,767)\nDim x As Long    '長整数型(-2,147,483,648~2,147,483,647)\nDim x As Byte    'バイト型(0~255)\n\nDim x As Boolean  'ブール型(真True/偽False)\nDim x As String   '文字列型\n\nDim x As Single   '実数型\nDim x As Double   '長実数型\n\nDim x As Currency  '通貨型\nDim x As Date    '日付型\n\nDim x As Object   'オブジェクト型\nDim x As Variant  'バリアント型(全てのデータ)\n
○変数の内容や条件の結果により、処理を分岐する。\nA:\n{{{\nIf 条件1 Then\n 条件1成立の場合の処理\nEndIf\n}}}\nB:\n{{{\nIf 条件1 Then\n 条件1成立の場合の処理\nElse\n 条件1不成立の場合の処理\nEndIf\n}}}\nC:\n{{{\nIf 条件1 Then\n 条件1成立の場合の処理\nElseIf 条件2\n 条件2成立の場合の処理\n(ElseIfの繰り返し可能)\nElse\n 全ての条件不成立の場合の処理\nEndIf\n}}}\n[[条件分岐=Then~Else~End If]]
○1つの変数の内容や条件の結果により、\n複数の処理に分岐できるステートメント\n{{{\nSelect Case 条件/変数\n Case a\n  aの場合の処理\n Case b To c\n  b~cの場合の処理\n Case d,e\n  dまたはeの場合の処理\n Case Is >=f Or 変数<g \n  f以上またはg未満の場合の処理\n Case Else\n  上記以外の場合の処理\nEnd Select\n}}}\n\n[[条件分岐=Select Case~End Select]]
○条件を満たす間、又は満たすまで処理を繰り返すステートメント\n\nA:条件が成り立っているとき処理する。最初から成り立たないときは処理しない。\n{{{\nDo While 条件式\n 繰り返したい処理\nLoop\n}}}\nB:条件が成り立つまで処理する。最初から成り立つときは処理しない。\n[[Do Until~Loop文の基本構造]]\n{{{\nDo Until 条件式\n 繰り返したい処理\nLoop\n}}}\nC:条件が成り立っているとき処理する。最低1回は処理する。\n{{{\nDo\n 繰り返したい処理\nLoop While 条件式\n}}}\n\nD:条件が成り立つまで処理する。最低1回は処理する。\n{{{\nDo\n 繰り返したい処理\nLoop Until 条件式\n}}}\n
○繰り返しの回数を指定できる場合に使うループ処理。\n\n 変数に最初は開始値が代入され、\n1回の処理が終わるたびに増加数分が加えられ、\n終了値まで処理が繰り返されます。\n{{{\nFor 変数 = 開始値 To 終了値 Step 増加数\n 繰り返したい処理\nNext 変数\n}}}
http://blog.livedoor.jp/andrewj/\n\n[img[img/vba12_1.gif]] \n引き算のマークを2つ付けると「TRUE」は「1」に成って、「FALSE」が「0」に成ります。\n[img[img/vba12_2.gif]] \n\n[[ユーザ設定関数=セルの色を判別]]
   This Workbookのモジュール \n{{{\nPrivate Sub Workbook_Open()\n Sheets("sheet1").Select\n Range("a1").Select\nEnd Sub \n}}}
このWikiは、摩耶がローカルで\nエクセルのなんやかんやの健忘録として使っていたものです。\n\nそれまでは、エクセルで書き溜めていただけでしたが\n別のをつくろうとすると探すのが大変でした。\n\nTiddlyWikiは、通常のWikiクローンとは違い、\nローカルなPC上で個人がメモを取る目的で開発されたHTMLファイル1つだけで\n構成されているユニークなWikiクローンです。\nローカルWikiであるTiddlyWikiを試用してみて、\n「これ、これ探してたのはこれだぁ!」って感じでした。\n\nTiddlerと呼ばれるカード単位でメモをとることができ、\nこのTiddlerを次々に増やしていくような使い方になります。\n最初はNewTiddlerを選択し、Editで名前を変えるだけで項目が増やせます。\n\nWikiネームによる関連付けや\nファイル名を意識せず適当なタイトルでページを起こすことができます\n更新時刻が逆順に表示され、\n「超」整理法的なファイリングも実現可能。\n\nWikiネームによる有機的なメモ間の連携など・・・・・\nパソコンにIEがあれば、すぐ使える !!\n\n使わないなんて勿体無いですよ!\n----\n [[早速使ってみる]]\n\n
コマンドボタンは、通常マウスでクリックする事によって\n「押す」というアクションを実行しますが、\nAcceleratorプロパティを使って、任意のアクセスキーを指定することで、\nAltキーと組み合わせたキーボードのショートカットによって\n「押す」ことができるようになる。\n\n「Alt」キー+「V」キー\n[img[img/vba04.jpg]]\n注意!! \n1つのユーザーフォーム上で、複数のコントロールに同じアクセスキーを指定しないように\nアクセスキーが重なっていると、システム側は、\nどのコントロールのアクセスキーを指定されたか正しく処理を行なうことが\nできなくなってしまうから。
!イメージの表示\nイメージの表示は以下の書式です。なお、相対アドレスも利用できますので、ローカルでイメージを表示するなど相対アドレスを利用してみてはいかがでしょうか。\n\n{{{\n  [img[イメージURLアドレス]]\n}}}\n\n参考\nhttp://www.osmosoft.com/#EmbeddedImages
[[Excel~起動・終了・開く・閉じる]]\n[[Excel~プロパティ]]\n[[Excel~画面]]
   This Workbookのモジュール\n\n{{{\nPrivate Sub Workbook_Open()\n UserForm1.Show\nEnd Sub \n}}}\n\n!!ブックを開いたときにエクセルを非表示にして、フォームだけを表示\n{{{\n Private Sub Workbook_Open()\n  Application.Visible = False\n  UserForm1.Show\n End Sub\n}}}\n\n!!ユーザーフォームにボタンを配置し、非表示のエクセルを表示して、フォームを閉じる\n   ユーザーフォームのモジュール\n{{{\n Private Sub CommandButton1_Click()\n  Application.Visible = True\n  Unload Me\n End Sub\n}}}\n\n
!文字コード指定によるエスケープ\n一番強力なエスケープ方法は、文字コードで記号を書くことです。\n{{{\n&#91;&#91;リンクの抑止&#93;&#93;\n}}}\n&#91;&#91;リンクの抑止&#93;&#93;\n\n|!記号|!文字コード表記||!記号|!文字コード表記|\n| &#33; |&amp;#33;|| &#60; |&amp;#60;|\n| &#35; |&amp;#35;|| &#62; |&amp;#62;|\n| &#38; |&amp;#38;|| &#91; |&amp;#91;|\n| &#39; |&amp;#39;|| &#93; |&amp;#93;|\n| &#42; |&amp;#42;|| &#123; |&amp;#123;|\n| &#45; |&amp;#45;|| &#125; |&amp;#125;|\n| &#47; |&amp;#47;|| &#126; |&amp;#126;|
B10からE20の中に収まっている図形を削除\n\n標準モジュールへ\n{{{\nSub test()\n Dim wLeft As Long\n Dim wTop As Long\n Dim wRight As Long\n Dim wBottom As Long\n Dim s As Object\n With Range("B10:E20")\n wTop = .Top\n wLeft = .Left\n wBottom = .Top + .Height\n wRight = .Left + .Width\n End With\n For Each s In ActiveSheet.DrawingObjects\n With s\n If wTop <= .Top And _\n wLeft <= .Left And _\n wBottom >= .Top + .Height And _\n wRight >= .Left + .Width Then\n .Delete\n End If\n End With\n Next\nEnd Sub\n}}}
[[カスタマイズする_.tiddler ]]\n[[カスタマイズする_ツールバーの色を変える]]
\n!!!tiddlerに外枠をつけてみる\ntiddlerの境目がどうにも見にくいので枠をつけてみる。\nStyleSheetというtiddlerに以下を記述。----\n{{{\n.tiddler {\nborder-top: solid 1px #ccc;\nborder-left: solid 1px #ccc;\nborder-right: solid 3px #aaa;\nborder-bottom: solid 3px #aaa;\npadding: 1em 1em 1em 1em;\nmargin: 0em 1em 2em 1em;\nbackground: #fff;\ncolor: 333366;\nwidth: 50em;\n-moz-border-radius: 1.0em;\n}\n}}}\n----\n!!!tiddlerに外枠をつけてみる\ntiddlerの表題の設定。\nStyleSheetというtiddlerに以下を記述。----\n{{{\nDIV.title{\nfont-size:large;\nborder: 2px solid #996633;\ncolor: #FFFFFF;\nbackground-color: #996633;\npadding-left: 8px;\npadding-right: 16px;\n}\n\n}}}\n----\n
 記事の右上に表示されている "close" , "close others" "edit" などの\nツールバーの色がちょっと目立ちすぎ。\nそこで色を変えたいのならば。\n以下コードを"StyleSheet"に追加するとしっくりします。\n{{{\n.toolbar .button { color: #ccc; }\n}}}\n\n※他の色を使用したい場合は[[色見本]]を参考
VBE画面でユーザーフォームをデザインするときに、右図のようなツールボックスが表示されます。\n(カレンダーコントロールが追加済) \nカレンダーコントロールは標準では表示されないので、使用する前に追加しておきます。 \n \n★追加するための操作方法 \n (1) VBE画面の[ツール]メニュー [その他のコントロール]をクリック \n (2) [カレンダー コントロール 9.0]をチェックして [OK]ボタンをクリック \n※ カレンダーコントロール9.0は、Office2000の場合、\n  コントロールパネルのアプリケーションの追加と削除で、\n  Microsoft Access for Windowsの中の[カレンダー コントロール]を\n  選択してインストールすれば、左図のように[利用可能なコントロール]に表示される。   インストールはマクロを実行するだけのパソコンにも必要だが \n\nユーザーフォームのコード画面で、イベントマクロとして作成します。\n注意点としては、日付をセルにセットする場合は、\nセルの書式設定の表示形式を適当に設定する必要があります。 \n \n{{{\nPrivate Sub Calendar1_Click() 'クリックされた時に動作する\n カレンダーの日付をセルにセットする\nEnd Sub\n}}}\n{{{\nPrivate Sub カレンダーの日付をセルにセットする()\n Cells(11, 7) = Calendar1.Value '現在の日付をG11セルにセットする\n Cells(12, 7) = Calendar1.Year '現在の年\n Cells(13, 7) = Calendar1.Month '現在の月\n Cells(14, 7) = Calendar1.Day '現在の日\nEnd Sub\n}}}\n{{{\nPrivate Sub UserForm_Initialize() 'ユーザーフォームが開かれた時に動作する\n Calendar1.Value = Date 'カレンダーを今日の日付にする\n カレンダーの日付をセルにセットする\nEnd Sub\n}}}\n{{{\nPrivate Sub UserForm_Deactivate() 'ユーザーフォームが閉じられた時に動作する\n Unload UserForm1 'ユーザーフォームをメモリから削除する\nEnd Sub\n}}}\n\n[[サンプルExcel|exls/calendar1.xls]]・・・・・・保存で確認\n\n[[カレンダーコントロールのメソッド一覧]]\n[[カレンダーコントロールのプロパティ一覧]]
カレンダーコントロールのプロパティ一覧 \n|!区分|! プロパティ |! 説明 |\n| 基本表示 |~MonthLength |月の表示形式を指定する|\n|~|~DayLength|曜日の表示形式を指定する|\n|~|~FirstDay|カレンダーの最初の列に表示する曜日を指定する|\n|~|~ShowTitle|月および年のタイトルを表示するかどうかを指定する|\n|~|~ShowDateSelectors|月および年のセレクタを表示するかどうかを指定する|\n|~|~ShowDays|曜日を表示するかどうかを指定する|\n| 立体表示 |~GridCellEffect|カレンダーの格子を立体表示にするかどうかを指定する|\n|~|~GridLinesColor|~GridCellEffectプロパティが [しない] (0) に設定されているカレンダーの格子線の色を指定する|\n|~|~ShowHorizontalGrid|~GridCellEffectプロパティが [しない] (0) に設定されているカレンダーの水平の格子線を表示するかどうかを指定する|\n|~|~ShowVerticalGrid|~GridCellEffectプロパティが [しない] (0) に設定されているカレンダーの垂直の格子線を表示するかどうかを指定する|\n|強調表示|~ValuesNull|現在の日付を強調表示するかどうかを指定する|\n|フォント|~DayFont|カレンダーの曜日の表示に使うフォントを指定する|\n|~|~GridFont|格子の中にある日付に使用するフォントを指定する|\n|~|~TitleFont|カレンダーの上部に表示される月および年のタイトルに使用するフォントを指定する|\n|色|~BackColor|カレンダーの背景色を指定する|\n|~|~DayFontColor|曜日の表示に使用する色を指定する|\n|~|~GridFontColor|日付の表示に使用するフォントの色を指定する|\n|~|~TitleFontColor|月および年のタイトルの色を指定する|\n|選択|Year|現在選択されている年を指定する|\n|~|Month|カレンダーに現在表示されている月を指定する|\n|~|Day|現在選択されている日を指定する|\n|~|Value|カレンダーコントロールカレンダーコントロールで選択されている日付に対応する日付値|\n
ユーザーがカレンダーコントロールにフォーカスがあるときに、\n下表に該当する操作をするとイベントが発生します。 \n|! 機能別 |! メソッド |! 機能 |! 構文 |\n| 進める |~NextYear|カレンダーの値を 1年先に進める|controlname.~NextYear|\n|~|~NextMonth|カレンダーの値を 1月先に進める|controlname.~NextMonth|\n|~|~NextWeek|カレンダーの値を 1週先に進める|controlname.~NextWeek|\n|~|~NextDay|カレンダーの値を 1日先に進める|controlname.~NextDay|\n| 戻す |~PreviousYear|カレンダーの値を 1年前に戻す|controlname.~PreviousYear|\n|~|~PreviousMonth|カレンダーの値を 1月前に戻す|controlname.~PreviousMonth|\n|~|~PreviousWeek|カレンダーの値を 1週前に戻す|controlname.~PreviousWeek|\n|~|~PreviousDay|カレンダーの値を 1日前に戻す|controlname.~PreviousDay|\n|日付設定|Today|カレンダーに今日の日付を設定する|controlname.Today|\n|再描画、他 |~AboutBox|バージョン情報と著作権情報を表示|controlname.~AboutBox|\n|~|Refresh|カレンダーを再描画する|controlname.Refresh|\n
[[サンプルExcel|exls/ki1.xls]]\nテンキーだけで数式を入力したくて\n / を押したらyが入力されて\n &#42; を押したらxが入力されて\n z を押したら=が入力できるようにキーの変換をしてみました\n{{{\nPrivate Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)\n\nSelect Case KeyAscii\n Case Asc("/") 'Asc関数で指定文字を変換して分岐処理\n KeyAscii = Asc("y")\n Case Asc("*") 'Asc関数で指定文字を変換して分岐処理\n KeyAscii = Asc("x")\n Case Asc("z") 'Asc関数で指定文字を変換して分岐処理\n KeyAscii = Asc("=")\n Case Else '以外は何もしない\nEnd Select\nEnd Sub\n}}}\nチェックボックスにチェックを入れると~KeyAsciiの番号を教えてくれます\n{{{\nPrivate Sub CheckBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)\n MsgBox KeyAscii\nEnd Sub\n}}}\n★キーコードとKeyAsciiを調べるマクロ⇒[[サンプルExcel|exls/ki2.xls]]\n
コンボボックスを作り、いつものように、\nme.ComboBox1.\nと入力すると、プロパティやメソッドが表示される。\n\nポイントは、\n~~~~~~~~~~~~\nComboBox.AddItem\nで、行が追加されます。\nComboBox.ColumnCount = で、列数を設定でき、\nComboBox.List(行, 列)で、データをセットすることが出来ます。\n\n\n1つ目は\n固定値で、クー・チョキ・パーと順番にセット。\n\n2つ目は、\nシートの値からコンボボックスを作成してみた。\n A列コード B列商品名 C列単価\nの複数列のデータをコンボボックスにセットしてみた。\n\nシートのイメージは、\n\n[img[img/vba084-01.gif]]\n↑複数列のデータをセットしたイメージ\n\n/*\n * 3.作成したサンプル\n*/\n\nフォームを開くイベントで、\nコンボボックスにデータをセットした。\n\nPrivate Sub UserForm_Initialize()\n '----------------------\n 'コンボボックス1の設定\n '----------------------\n 'Accessで言うと連結列かな 0のインデックス番号\n Me.ComboBox1.BoundColumn = 0\n\n 'フォームの初期化でコンボボックスに値を代入する\n Me.ComboBox1.AddItem "グー"\n Me.ComboBox1.AddItem "チョキ"\n Me.ComboBox1.AddItem "パー"\n \n '----------------------\n 'コンボボックス2の設定\n '----------------------\n Me.ComboBox2.BoundColumn = 2 '連結はB列の商品名\n Me.ComboBox2.ColumnCount = 3 '列数は3\n Dim YLINE As Integer\n Dim setY As Integer\n YLINE = 2 '2行目からデータセット\n setY = 0 'コンボボックスは0からなので\n While Len(Sheets("MST").Cells(YLINE, "A")) <> 0 'A列のデータで有無をチェック\n '.Additemで行を追加\n Me.ComboBox2.AddItem Sheets("MST").Cells(YLINE, "A")\n '.Listで該当列にデータをセット\n Me.ComboBox2.List(setY, 1) = Sheets("MST").Cells(YLINE, "B")\n Me.ComboBox2.List(setY, 2) = Sheets("MST").Cells(YLINE, "C")\n YLINE = YLINE + 1\n setY = setY + 1\n Wend\n\nEnd Sub \n\n\nデータが作成できたら、取り出しのテストですね。\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nPrivate Sub CommandButton1_Click()\n MsgBox "ComboBox1.text=" & Me.ComboBox1.Text 'グーなどのテキスト文字\n MsgBox "ComboBox1.value=" & Me.ComboBox1.Value '値\nEnd Sub \n\n普通に、.Text .Valueで取り出してみました。\nComboBox.BoundColumn でAccessで言うと連結列を設定できます。\nこの辺も遊んでみてください。\n\n複数列のデータは、\n^^^^^^^^^^^^^^^^^^\nPrivate Sub CommandButton2_Click()\n MsgBox "ComboBox2.text=" & Me.ComboBox2.Text 'テキスト文字\n MsgBox "ComboBox2.value=" & Me.ComboBox2.Value '値\n MsgBox "ComboBox2.Column(0)=" & Me.ComboBox2.Column(0)\n MsgBox "ComboBox2.Column(1)=" & Me.ComboBox2.Column(1)\n MsgBox "ComboBox2.Column(2)=" & Me.ComboBox2.Column(2)\nEnd Sub \n\nと\nComboBox.Column(列番号)で、列を指定して、値を取り出すことができます。\n\n\nテストはボタンのクリックイベントでしたが、\n質問にあった、\n >Private Sub ComboBox1_Change()\n >\n >\n >End Sub\nで、値が変わった時に処理も可能です。\n
\n必要な部分最終セルの斜め右下のセル選択「データ範囲外の1列右、1行下のセル」で\n\nShift+Ctrl+→キー「データ範囲外の列全選択」⇒書式⇒列⇒表示しない\nShift+Ctrl+↓キー「データ範囲外の行全選択」⇒書式⇒行⇒表示しない\n「追記」データの上、左の部分は、 行番号、列番号で選択⇒書式⇒行、列⇒表示しない、
{{{\nSub Sample()\n Worksheets("Sheet1").ScrollArea = "A1:G20"\nEnd Sub\n}}}\n\n\n● ポイント ●\n\nブックを開いた時点で設定したい場合、Workbook_Openイベントに記述
http://blog.livedoor.jp/andrewj/\nこれは「保護」に少し似いています。\n{{{\nPrivate Sub Workbook_Open()\n Worksheets("Sheet1").ScrollArea = "A1:J10"\nEnd Sub\n}}}\nスクロールの設定をすると「ワークシート」で指定する範囲以外のセルを選択できないようになります。
\n!カスタマイズした設定を1箇所にまとめる方法\nStyleSheetLayoutやStyleSheetColorsはサイズが大きいため、一部だけカスタマイズしようとしても管理が大変です。その場合、変更対象部分だけStyleSheetにコピーしてカスタマイズすると便利です。両方に異なる設定があるときはStyleSheetの設定が優先されます。\n\n!カスタマイズした設定を数箇所に分割する方法\n上記の方法でも、StyleSheetのサイズが大きくなっていくと、それはそれで管理が大変になってきます。その場合以下のようなプラグインを作成すれば、任意の記事にカテゴリーごとに分割してスタイルシート設定を記述することができるようになります。\n##「スタイルシートその1」「スタイルシートその2」というタイトルで記事を作成。それぞれにスタイルシート設定を記述する\n##「追加スタイルシートプラグイン」等のタイトルの記事を作成、以下の内容を記述する\n##systemConfigタグをつけて保存、リロード\n{{{\nstore.addNotification("スタイルシートその1", refreshStyles);\nstore.addNotification("スタイルシートその2", refreshStyles);\n}}}\n※複数の記事に異なる設定がある場合、後にaddNotificationされた方が優先されます
http://blog.livedoor.jp/andrewj/\n\nこのマクロで指定する範囲を画面に合わせることができます。\n{{{\nPrivate Sub Workbook_Open()\n Range("A1:AL25").Select\n ActiveWindow.Zoom = True\nEnd Sub\n}}}
セル内容が空白ならば、一つ上のセルの値を代入する。\nたとえば、画像ならば、\nセルA3には、一つ上であるセルA2のbという文字を代入する\n同じく、セルA5にはd,\n\n|!|!A|!B|!C|\n|!1|a|||\n|!2|b|||\n|!3||||\n|!4|d|||\n|!5||||\n{{{\nSub fillCells()\n Dim lastRow As Long\n ' ---最終行の設定\n lastRow = Range("A65535").End(xlUp).Row\n \n For i = 2 To lastRow\n If IsEmpty(Cells(i, "A").Value) Then\n ' ---空の場合上の値をコピー\n Cells(i, "A").Value = Cells(i - 1, "A").Value\n End If\n Next\nEnd Sub\n}}}
FormulaR1C1とは\n{{{\nRange("C1").Select \nActiveCell.FormulaR1C1 = "IF(RC[-2]="""","""",R3C6)" \n}}}\n\n基準となるセル この場合、C1ですね。 \nから、ROW(行)は変わらず、COLUMN(列)が2列戻るセルを参照する \n\n[[セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ)_2]]\n[[セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ)_3]]
\n構文 Object.Formula A1形式で数式の設定/取得\n Object.FormulaR1C1 R1C1形式で数式の設定/取得\n\n\n 設定項目 内容\n Object Rangeオブジェクト\n\n\n●サンプル1●\n{{{\nSub FormulaSamp1()\n\n '----(1)\n Range("C1").Formula = "=A1+B1"\n '----(2)\n' Range("C1").Formula = "=$A$1+$B$1"\n '----(3)\n' Range("C1").FormulaR1C1 = "=R1C1+R1C2"\n '----(4)\n' Range("C1").FormulaR1C1 = "=RC[-2]+RC[-1]"\n MsgBox "A1形式では:" & Range("C1").Formula & Chr(13) & _\n "R1C1形式では:" & Range("C1").FormulaR1C1\n\nEnd Sub\n}}}\n (1)~(4)はどれもセルC1にセルA1とB1を足す数式を入力します。\n(1)がA1形式で相対参照、\n(2)がA1形式で絶対参照\n(3)がR1C1形式で相対参照\n(4)がR1C1形式で絶対参照  の数式を入力します。\nセルに入力された数式は、\n(1)と(3)、\n(2)と(4)\nで同じものになります。\n(5)のステートメントで入力された数式を両方の形式で取得しています。\n\n[[セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ)_1]]\n[[セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ)_3]]
Type the text for '25 March 2007'
セルを選択するには、Range / Cells / Rows / Columns 等をつかいます。\n\n セルを選択する方法は、2つ以上の方法があります。\nマクロを組む場合には、都合の良い 方を使います \n [[exampleのtest1|exls/sentaku.xls]] のマクロを動かして確認\n\n|!選択・参照|!A1形式|!A1形式以外|\n|ひとつだけセルを選択|Range("A1").Select|Cells(1,1).Select|\n|連続した複数のセルを選択|Range("A2:D8").Select|Range(Cells(2,1),Cells(8,4)).Select|\n|一行の選択|Range("3:3").Select|Rows(3).Select|\n|~|~|Rows("3").Select|\n|複数行の選択|Range("2:5").Select|Rows("2:5").Select|\n|~|~|Range(Rows(2),Rows(5)).Select|\n|一列の選択|Range("C:C").Select|Columns(3).Select|\n|~|~|Columns("C").Select|\n|複数列の選択|Range("C:E").Select|Columns("C:E").Select|\n|~|~|Range(Columns(3),Columns(5)).Select|
!テーブルの作成方法\n\nテーブルの書式は以下の通りです。\n\n|!1111111|!2222222|\n|>| colspan |\n| rowspan |左|\n|~| 右|\n|bgcolor(#a0ffa0):colored| 中央 |\n|caption|c\n\n*文字寄せ\n**|の左に文字を付けて記述すると左寄せ\n**|の左を空けて、右に寄せて記述すると右寄せ\n**|の左右を空けて記述すると中央寄せ\n*セル結合\n**|>|で列の結合表示\n**|~|でそのセルの行を結合して表示\n\n{{{\n|!1111111|!2222222|\n|>| colspan |\n| rowspan |左|\n|~| 右|\n|bgcolor(#a0ffa0):colored| 中央 |\n|caption|c\n}}}
保護したいエクセルを開き、\n「名前を付けて保存」を実行する\n\n「名前を付けて保存」ダイアログの右上にある\n「ツール」のリストから「全般オプション」を選択する。\n\n[img[img/vba01.jpg]]\n\n後は出て来るダイアログに従いパスワードを入力すれば\nパスワードで保護されたEXCELが出来る。\n
アクティブなファイル名を取得\n\nmyfile = ActiveWorkbook.Name\n\n \n\nアクティブなファイル名を取得(フルパス付き)\n\nmyfile = ActiveWorkbook.FullName\n\n \n\nマクロを実行しているファイル名を取得\n\nmyfile = ThisWorkbook.Name\n\n
[ ~AdvancedFilter メソッドの構文 ]\n{{{\nexpression.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)\n}}}\n| 引 数 |>| 内               容 |\n|Action|>|必ず指定します。抽出結果の表示方法を指定します|\n|~| 定 数 | 内               容 |\n|~|xlFilterInPlace|検索条件に一致する行だけを表示し、それ以外の行を非表示にします|\n|~|xlFilterCopy|検索条件に一致する行をワークシートの別の場所にコピーして抽出します<BR>コピー先セル範囲は、~CopyToRange で指定します|\n|~CriteriaRange|>|省略可能です。検索条件範囲を指定します。<br>省略すると、検索条件なしで抽出されます|\n|~CopyToRange|>|省略可能です。引数 Action を xlFilterCopy に設定したときに、抽出された行のコピー先のセル範囲の左上隅となるセルを指定します。|\n|Unique|>|省略可能です。検索条件に一致するレコードのうち、重複するレコードを無視するかとうかを指定します|\n|~| 定 数 | 内    容 |\n|~|True|重複するレコードは無視して抽出されます|\n|~|False|重複するレコードも含めて、抽出されます。既定値|\n\n\n[img[img/vba02.jpg]]\n\n!!1 単一条件によるデータ抽出 \n 処理内容:リストから男性のデータのみ抽出します\n{{{\nSub AdvancedFilter_1()\nDim Drange As Range,Crange As Range\nWorksheets("Sheet1").Select\n' 検索条件式の入力\nRange("H1").Value = Range("B1").Value\nRange("H2").Value = "男"\n' フィルタの実行\nWith Worksheets("Sheet1")\nSet Drange = .Range("A1").CurrentRegion\nSet Crange = .Range("H1").CurrentRegion\nEnd With\nRange("A1").Select\nDrange.AdvancedFilter Action:=xlFilterInPlace,CriteriaRange:=Crange, Unique:=False \nSet Drange =Nothing\nSet Crange =Nothing\nEnd Sub\n}}}\n!!2 AND 条件によるデータ抽出 \n 処理内容:女性で年齢20歳以上40歳未満のデータを抽出します\n{{{\nSub AdvancedFilter_2()\nDim Drange As Range,Crange As Range\nWorksheets("Sheet1").Select\n' 検索条件式の入力\nRange("H1").Value = Range("B1").Value\nRange("H2").Value = "女"\nRange("I1:J1").Value = Range("E1").Value\nRange("I2").Value = ">=20"\nRange("J2").Value = "<40"\n' フィルタの実行\nWith Worksheets("Sheet1")\nSet Drange = .Range("A1").CurrentRegion\nSet Crange = .Range("H1").CurrentRegion\nEnd With\nRange("A1").Select\nDrange.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Crange, Unique:=False \nSet Drange =Nothing\nSet Crange =Nothing\nEnd Sub\n}}}\n!!3 OR 条件によるデータ抽出 \n 処理内容:県名が愛知県または三重県のデータを抽出\n{{{\nSub AdvancedFilter_3()\nDim Drange As Range,Crange As Range\nWorksheets("Sheet1").Select\n' 検索条件式の入力\nRange("H1").Value = Range("D1").Value\nRange("H2").Value = "愛知"\nRange("H3").Value = "三重"\n' フィルタの実行\nWith Worksheets("Sheet1")\nSet Drange = .Range("A1").CurrentRegion\nSet Crange = .Range("H1").CurrentRegion\nEnd With\nRange("A1").Select\nDrange.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Crange, Unique:=False \nSet Drange =Nothing\nSet Crange =Nothing\nEnd Sub\n}}}\n!!4 検索条件を"Sheet3"に作成し抽出結果は"H1"を左上隅として表示 \n 処理内容:県名が愛知県または三重県のデータを抽出\n{{{\nSub AdvancedFilter_4()\nDim Drange As Range, Crange As Range\n' 検索条件式の入力\nWith Worksheets("Sheet3")\n.Range("A1").Value = Worksheets("Sheet1").Range("D1").Value\n.Range("A2").Value = "愛知"\n.Range("A3").Value = "三重"\nSet Crange = .Range("A1").CurrentRegion\nEnd With\n' フィルタの実行\nWith Worksheets("Sheet1")\nSet Drange = .Range("A1").CurrentRegion\n.Range("A1").Select\nDrange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Crange, _\nCopyToRange:=.Range("H1"), Unique:=False\nEnd With\nSet Drange =Nothing\nSet Crange =Nothing\nEnd Sub\n}}}\n!!5 フィルタオプションを解除 \n 処理内容:フィルタオプションを解除してすべてのデータを表示します\n{{{\nSub AdvancedFilter_5()\nWorksheets("Sheet1").Select\nActiveSheet.ShowAllData\nEnd Sub\n}}}
検証中[img[img/mitico.gif]]\nコマンドボタンでグラフを切り替えたい。\n\nユーザーフォームにImageをひとつとCommandButtonをふたつ。\nできるだけImageは大き目に。\nボタンをおすとグラフが切り替わります。 \nあらかじめグラフをExportしておいて、\nボタンを押した時のイベントでLoadPictureしています。 \n \n \n[標準モジュールに書くコード] \n{{{\nSub Graph_Test() \nSheet2.Activate \nDim MyRange As Range \n'一応お掃除 \nActiveSheet.ChartObjects.Delete \n' \n'*****************************\n'テストデータとグラフを生成。\n'(実データ、グラフがあれば不要)\n'*****************************\nRange("B1").Value = "売上"\nRange("A2").Value = "aa"\nRange("A3").Value = "bb"\nRange("A4").Value = "cc"\nRange("A5").Value = "dd"\nRange("B2").Value = "100"\nRange("B3").Value = "80"\nRange("B4").Value = "50"\nRange("B5").Value = "20"\n'\n'ひとつめのグラフMyGraph1\nSet MyRange = Range("A7:D20")\nWith MyRange\n  ActiveSheet.ChartObjects.Add( _\n  .Left, .Top, .Width, .Height).Name = "MyGraph1"\nEnd With\n'\nWith ActiveSheet.ChartObjects("MyGraph1").Chart\n  .ChartType = xlColumnClustered\n  .SetSourceData Source:=Sheet2.Range("A1:B5"), _\n  PlotBy:=xlRows\n  .Location Where:=xlLocationAsObject, Name:="Sheet2"\n  .HasTitle = True\n  .ChartTitle.Characters.Text = "グラフ(1)"\n  .Axes(xlCategory, xlPrimary).HasTitle = True\n  .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "氏名"\n  .Axes(xlValue, xlPrimary).HasTitle = True\n  .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "売上"\nEnd With\n'\n'ふたつめのグラフMyGraph2(手抜きでデータ範囲は上と同じ)\nSet MyRange = Range("F7:I20")\nWith MyRange\n  ActiveSheet.ChartObjects.Add( _\n  .Left, .Top, .Width, .Height).Name = "MyGraph2"\nEnd With\nWith ActiveSheet.ChartObjects("MyGraph2").Chart\n  .ChartType = xl3DPie\n  .SetSourceData Source:=Sheet2.Range("A1:B5"), _\n  PlotBy:=xlColumns\n  .Location Where:=xlLocationAsObject, Name:="Sheet2"\n  .HasTitle = True\n  .ChartTitle.Characters.Text = "グラフ(2)"\nEnd With\nSet MyRange = Nothing\n'\n'シートにフォーカスを戻す。\nActiveWindow.Visible = False\nActiveCell.Activate\n'\n'(自動的にグラフのツールが表示される場合があるので)\nApplication.CommandBars("Chart").Visible = False\n'*****************************\n'テストデータとグラフを生成終了。\n'*****************************\n'\nc:\s_aquiraというディレクトリーを作ります。\n'(不要なら後で消して下さい。)\nOn Error Resume Next\nMkDir "c:\s_aquira"\nOn Error GoTo 0\n'\n'ここからが今回のテーマ\n'グラフをエクスポートしておきます。\n'「Chart」を後ろに付けるのがポイント。\nWith Sheet2\n  .ChartObjects("MyGraph1").Chart.Export _\n    FileName:="c:\s_aquira\smygraph1.gif"\n  .ChartObjects("MyGraph2").Chart.Export _\n    FileName:="c:\s_aquira\smygraph2.gif"\nEnd With\n'ユーザーフォームの表示。\nSheet1.Activate\nUserForm11.Show\nEnd Sub\n}}}\n\n[ユーザーフォームに書くコード]\n{{{\nPrivate Sub CommandButton1_Click()\nImage1.Picture = LoadPicture("c:\s_aquira\smygraph1.gif")\nEnd Sub\n\nPrivate Sub CommandButton2_Click()\nImage1.Picture = LoadPicture("c:\s_aquira\smygraph2.gif")\nEnd Sub\n}}}\n[補足]\n上の例では、ユーザーフォームを表示する直前にグラフをExport していますが、実際はグラフの作成時、変更時にExportするようにしましょう。\n
[[サンプルExcel|exls/form1.xls]]\n標準モジュールに\n{{{\n'標準的な名称が決まっているAPIで使用する値を、定数として宣言\n'ウインドウスタイルの処理\nPrivate Const GWL_STYLE = (-16)\n'\nPrivate Const WS_SYSMENU = &H80000\n'使用するAPIを宣言\n'アクティブウインドウのハンドルを取得する\nPrivate Declare Function GetActiveWindow Lib "user32" () As Long\n'メニューバーを描画する\nPrivate Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long\n'ウインドウに関するデータを取得する\nPrivate Declare Function GetWindowLong Lib "user32" _\nAlias "GetWindowLongA" _\n(ByVal hWnd As Long, _\nByVal nIndex As Long) As Long\n'指定されたウィンドウの属性を変更\nPrivate Declare Function SetWindowLong Lib "user32" _\nAlias "SetWindowLongA" _\n(ByVal hWnd As Long, _\nByVal nIndex As Long, _\nByVal dwNewLong As Long) As Long\nPublic Sub HideSysmenu(Optional ByVal Dummy As Boolean)\n Dim Ret As Long, hWnd As Long, Wnd_STYLE As Long\n 'アクティブウインドウのハンドルを取得する\n hWnd = GetActiveWindow()\n 'ウインドウに関するデータを取得\n Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE)\n '\n Wnd_STYLE = Wnd_STYLE And (Not WS_SYSMENU)\n '指定されたウィンドウの属性を変更\n Ret = SetWindowLong(hWnd, GWL_STYLE, Wnd_STYLE)\n 'メニューバーを描画\n Ret = DrawMenuBar(hWnd)\nEnd Sub\n}}}\nユーザーフォームのモジュールに\n{{{\nPrivate Sub UserForm_Activate()\n HideSysmenu\nEnd Sub\n}}}\n(×)がないのでテストするときは閉じるボタンをつくっておく!!\n{{{\nPrivate Sub CommandButton1_Click()\nUnload UserForm1\nEnd Sub\n}}}
VBAでフォームを半透明\n(標準モジュール)\n{{{\nPublic Declare Function FindWindow Lib "user32" _\n Alias "FindWindowA" _\n (ByVal classname As Any, ByVal winname As Any) As Long\nPublic Declare Function SetWindowLong Lib "user32" _\n Alias "SetWindowLongA" _\n (ByVal hwnd&, ByVal idx&, ByVal style&) As Long\nPublic Declare Function GetWindowLong Lib "user32" _\n Alias "GetWindowLongA" _\n (ByVal hwnd&, ByVal idx&) As Long\nPublic Declare Function SetLayeredWindowAttributes Lib "user32" _\n (ByVal hwnd&, ByVal crKey As Long, _\n ByVal bAlpha As Long, ByVal dwFlags As Long) As Long\n\nPublic Const GWL_EXSTYLE = (-20)\nPublic Const WS_EX_TOOLWINDOW = &H80\nPublic Const WS_EX_LAYERED = &H80000\n\nPublic Const LWA_COLORKEY = 1\nPublic Const LWA_ALPHA = 2\n\n\nSub test()\n UserForm1.Show\nEnd Sub\n}}}\n\n(フォーム)\n{{{\nPrivate Sub UserForm_Initialize()\n hwnd& = FindWindow("ThunderDFrame", Me.Caption)\n If hwnd& <> 0& Then\n SetWindowLong hwnd&, GWL_EXSTYLE, _\n GetWindowLong(hwnd&, GWL_EXSTYLE) Or WS_EX_LAYERED\n SetLayeredWindowAttributes hwnd&, 0, 192, LWA_ALPHA\n End If\nEnd Sub\n}}}
{{{\nUserForm2.Show \n}}}\nというコードを \n{{{\nUserForm2.Show vbModeless\n}}}
標準モジュール\n{{{\nSub Auto_Close()\n ActiveWorkbook.Save\nEnd Sub\n}}}
 標準モジュール\n!!複数のブックを開いていてすべてのブックを終了\n{{{\n Sub test()\n  Workbooks.Close\n End Sub\n}}}\n!!アクティブなブックだけ終了\n{{{\n Sub test()\n  ActiveWorkbook.Close\n End Sub\n}}}\n!!ブック名を指定して終了\n{{{\n Sub test()\n   Workbooks("システム.xls").Close\n End Sub\n}}}\n 
  標準モジュール\n!!1行目から20行目までで折り返します。\n{{{\n Sub test()\n   ActiveSheet.ScrollArea = "1:20"   \n End Sub\n}}}\n!!A列からJ列までで折り返します\n{{{ Sub test()\n   ActiveSheet.ScrollArea = "A:J"    \n End Sub\n}}}\n
{{{\nApplication.ScreenUpdating = False\n}}}\nとコードの最初に書けばOKです。\nまた動きを見せたい場合は\n{{{\nApplication.ScreenUpdating = True \n}}}
マクロを実行できる人の制限\n\n実行のパスワード入力後にマクロが実行される方法\n\n<操作フロー>\n1.マクロ実行ボタンを押す\n2.パスワード要求\n3.パスワード一致によりマクロ実行←パスワードが合わないときはキャンセル\n4.処理完了\n\n{{{\n dim x as string\n x=application.inputbox("pass")\n if x <> "123" then\n msgbox "x"\n exit sub\n end if\n msgbox "o"\n}}}\n
Chr 関数を使います。\n{{{\nSub miko_test()\n MsgBox "タブ(スペース)を入れる時には" & Chr(9) & "Chr(9) を入れます"\n MsgBox "改行する時には" & Chr(10) & " Chr(10) または" & Chr(13) & _\n " Chr(13) または" & vbCrLf & " vbCrLf を入れます"\nEnd Sub\n}}}\n \n
!!メッセージボックスのOKボタンを押すとクリア処理、キャンセルを押すと処理を止める\n{{{\nSub Test()\n If MsgBox("クリアしていいですか?",vbOKCancel + vbQuestion) = vbOK Then\n  'ここにクリアするときの処理を記述\n Else\n  'ここにクリアしないときの処理を記述\n End If\nEnd Sub\n}}}\n!!結果を定数から取得して、処理を選択。 この定数は下の「戻り値の定数」になる。\n{{{\nSub mikotest()  \n Dim aa\n aa = MsgBox("メッセージボックスのテストです。", vbYesNoCancel + vbQuestion)\n If aa = 2 Then\n  MsgBox "キャンセル"\n ElseIf aa = 6 Then\n  MsgBox "YES"\n ElseIf aa = 7 Then\n  MsgBox "NO"\n End If\nEnd Sub\n}}}\n\n      メッセージボックスの引数一覧\n| 設定値の定数 | 値 | 内容 |\n|vbOKOnly| 0|[OK] ボタンのみを表示します|\n|vbOKCancel| 1|[OK] ボタンと [キャンセル] ボタンを表示します|\n|vbAbortRetryIgnore| 2|[中止]、[再試行]、および [無視] の 3 つのボタンを表示します|\n|vbYesNoCancel| 3|[はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。|\n|vbYesNo| 4|[はい] ボタンと [いいえ] ボタンを表示します。|\n|vbRetryCancel| 5|[再試行] ボタンと [キャンセル] ボタンを表示します。|\n|vbCritical| 16|警告メッセージ アイコンを表示します。|\n|vbQuestion| 32|問い合わせメッセージ アイコンを表示します。|\n|vbExclamation| 48|注意メッセージ アイコンを表示します。|\n|vbInformation| 64|情報メッセージ アイコンを表示します|\n|vbDefaultButton1| 0|第 1 ボタンを標準ボタンにします。 |\n|vbDefaultButton2| 256|第 2 ボタンを標準ボタンにします。|\n|vbDefaultButton3| 512|第 3 ボタンを標準ボタンにします。|\n|vbDefaultButton4| 768|第 4 ボタンを標準ボタンにします。|\n|vbApplicationModal| 0|アプリケーション モーダルに設定します。メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません|\n|vbSystemModal| 4096|システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。 |\n|vbMsgBoxHelpButton| 16384|ヘルプ ボタンを追加します。|\n|VbMsgBoxSetForeground| 65536|最前面のウィンドウとして表示します。|\n|vbMsgBoxRight| 524288|テキストを右寄せで表示します。|\n|vbMsgBoxRtlReading| 1048576|テキストを、右から左の方向で表示します。|\n\n\n|戻り値の定数|値|内容|\n|vbOK|1|[OK]|\n|vbCancel|2|[キャンセル]|\n|vbAbort|3|[中止]|\n|vbRetry|4|[再試行|\n|vbIgnore|5|[無視]|\n|vbYes|6|[はい]|\n|vbNo|7|[いいえ]|
『はい、いいえ』を選択できるようにし、『いいえ』の場合は終了\n{{{\nSub メッセージボックスを表示する()\nIf MsgBox("次の作業に移りますか?", vbYesNo) = vbNo Then Exit Sub\nMsgBox "次の作業に移ります", vbInformation\nEnd Sub\n}}}\n
!!Excel97、Excel2000 共通\n   標準モジュール\n\n{{{\nPrivate Const GWL_STYLE = (-16)\nPrivate Const WS_CAPTION = &HC00000\nPrivate Declare Function GetWindowLong Lib "user32" _\n   Alias "GetWindowLongA" _\n   (ByVal hWnd As Long, _\n   ByVal nIndex As Long) As Long\nPrivate Declare Function SetWindowLong Lib "user32" _\n   Alias "SetWindowLongA" _\n   (ByVal hWnd As Long, _\n   ByVal nIndex As Long, _\n   ByVal dwNewLong As Long) As Long\nPrivate Declare Function GetActiveWindow Lib "user32" () As Long\nPrivate Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long\n}}}\n{{{\nPublic Sub HideCaption()\n Dim Ret As Long\n Dim hWnd As Long\n Dim Wnd_STYLE As Long\n hWnd = GetActiveWindow()\n Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE)\n Wnd_STYLE = Wnd_STYLE And (Not WS_CAPTION)\n Ret = SetWindowLong(hWnd, GWL_STYLE, Wnd_STYLE)\n Ret = DrawMenuBar(hWnd)\nEnd Sub\n}}}\n{{{\nSub test()\n UserForm1.Show\nEnd Sub\n}}}\n\n   ユーザーフォームのモジュール\n{{{\nPrivate Sub UserForm_Activate()\n HideCaption\nEnd Sub\n\nPrivate Sub CommandButton1_Click()\n Unload Me\nEnd Sub\n}}}\n\n\n[[ユーザーフォームを出して、数秒後に消す]]
[[サンプルExcel|exls/form1.xls]]\n標準モジュールに\n{{{\nPrivate Const GWL_STYLE = (-16)\nPrivate Const WS_CAPTION = &HC00000\nPrivate Declare Function GetWindowLong Lib "user32" _\n Alias "GetWindowLongA" _\n (ByVal hWnd As Long, _\n ByVal nIndex As Long) As Long\nPrivate Declare Function SetWindowLong Lib "user32" _\n Alias "SetWindowLongA" _\n (ByVal hWnd As Long, _\n ByVal nIndex As Long, _\n ByVal dwNewLong As Long) As Long\nPrivate Declare Function GetActiveWindow Lib "user32" () As Long\nPrivate Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long\nPublic Sub HideCaption()\n Dim Ret As Long\n Dim hWnd As Long\n Dim Wnd_STYLE As Long\n hWnd = GetActiveWindow()\n Wnd_STYLE = GetWindowLong(hWnd, GWL_STYLE)\n Wnd_STYLE = Wnd_STYLE And (Not WS_CAPTION)\n Ret = SetWindowLong(hWnd, GWL_STYLE, Wnd_STYLE)\n Ret = DrawMenuBar(hWnd)\nEnd Sub\n}}}\nフォームモジュールに\n{{{\nPrivate Sub UserForm_Activate()\n HideCaption\nEnd Sub\nPrivate Sub CommandButton1_Click()\n Unload Me\nEnd Sub\n}}}
ユーザーフォームの Activate イベントプロシージャとして、\n{{{\nPrivate Sub UserForm_Activate()\n  Application.Wait Now() + TimeValue("00:00:03")\n  Unload Me\nEnd Sub\n}}}\nというコードを書いておくと、3秒後に勝手に閉じられます。\n   ユーザーフォームのモジュール \n\n[[ユーザーフォームのタイトルバーを消すには]]
{{{\nUnload UserForm1   \n}}}\n
http://blog.livedoor.jp/andrewj/\n\nVBAなら格色は「Color.Index」(特殊番号)があります。\n\n例えば、「赤」の「Color.Index」が「3」です。\n下記のユーザ設定関数でセル又は範囲の色が「赤」かどうか調べることができます。\n\nIsRed\nこの「If」と「Then」を使用するユーザ設定関数がセル又は範囲が「赤」なら「TRUE」が表示します。\n(「赤」じゃない場合は「FALSE」が表示します。\n{{{\nFunction IsRed(cell As Range) As Boolean\n If cell.Interior.ColorIndex = 3 Then IsRed = True\nEnd Function\n}}}\n[img[img/vba12_1.gif]] \nCountRed\n「赤」のセルを数える場合、どうすれば良いでしょう?私は簡単な方法を知っていますが。。。引き算のマークを2つ付けると「TRUE」は「1」に成って、「FALSE」が「0」に成ります。\n\n[img[img/vba12_2.gif]] \n\nしかしよく見ると範囲ならこの方法は正しく使用できないと分かります。\n\n{{{\nFunction CountRed(cell As Range) As Long\n Dim c As Range\n For Each c In cell\n If c.Interior.ColorIndex = 3 Then CountRed = CountRed + 1\n Next\nEnd Function\n}}}\n\n[img[img/vba12_3.gif]]\n\n\n注意:条件付き書式の色に対して、ユーザ設定関数を使用できませんが最初から条件付き書式で使用する数式を使用するとユーザ設定関数が必要ないでしょう。 \n\n\n\n[[「TRUE」、「FALSE」を数値に]]
{{{\nPrivate Sub UserForm_Initialize() \n 'ユーザーフォームを初期化する\n For I = 0 To 7 \n 'Iが0から7まで(2行-2から9行-2まで)\n ComboBox1.AddItem Worksheets("名簿").Cells(I + 2, 2).Value\n '名簿シートのB列\n Next \n '繰り返す\nEnd Sub\n}}}\n[img[img/vba05-2.gif]][img[img/vba05-1.gif]]\n\n※シートのB列の氏名を、コンボボックスのリストにセットしている\n※~AddItemメソッドで、名簿シートの内容をリストにセットしている\n※名簿シートの2行目から9行目まで、反復処理している\n\n
{{{\nPrivate Sub UserForm_Initialize() \n 'ユーザーフォームを初期化する\n ComboBox1.ColumnCount = 2 \n 'コンボボックスの列は2列にする\n For I = 0 To 7 \n 'Iが0から7まで(2行-2から9行-2まで)\n ComboBox1.AddItem Worksheets("名簿").Cells(I + 2, 1).Value\n '名簿シートのA列\n ComboBox1.List(I, 1) = Worksheets("名簿").Cells(I + 2, 2).Value\n '同じくB列\n Next '繰り返す\nEnd Sub\n}}}\n[img[img/vba06-2.gif]][img[img/vba06-1.gif]]\n
{{{\nPrivate Sub UserForm_Initialize() \n 'ユーザーフォームを初期化する\nDim リスト As New Collection\nDim 列 As String, 上端セル As String, 最下端セル As String\nDim セル範囲 As Range, 各セル As Range\n'\n 列 = "B" '※3 リストにセットするワークシートの列名\n 上端セル = 列 & "2" '※4 列のデータの最上行(この例は1行目に見出し行)\n 最下端セル = 列 & "65536"\n With Worksheets("SSS") '※5\n Set セル範囲 = .Range(.Range(上端セル), .Range(最下端セル).End(xlUp))\n End With\n For Each 各セル In セル範囲 \n 'セル範囲の各セルについて繰り返し処理\n On Error Resume Next \n '次行が実行時エラーならその次行から継続\n リスト.Add 各セル.Value, CStr(各セル.Value)\n 'Collectionオブジェクトにメンバを追加\n If Err.Number = 0 Then \n '実行時エラーが発生していなければ\n Me.ComboBox1.AddItem 各セル.Value \n 'コンボボックスのリストに項目を追加\n End If\n On Error GoTo 0\n Next\nEnd Sub\n}}}\n[img[img/vba7.gif]]\n
合計の高い順に並べ替えてみましょう。\n\n{{{\nSub sort2()\n  Range("A1:I11").Sort _\n    Key1:=Range("G1"), _\n    Order1:=xlDescending, _\n    Header:=xlYes, _\n    Orientation:=xlTopToBottom\nEnd Sub \n}}}\n@@各引数は省略可能であるが、前の設定が受け継がれるので指定した方が間違いがない@@ \n○Key1~3 \n ・省略可能。並べ替えるフィールドを、テキストまたはRangeオブジェクトで指定 \n○Order1~3 \n ・省略可能。\n  xlAscending :昇順に並べ替えます。既定値。 \n  xlDescending:降順に並べ替えます。 \n○Type \n ・省略可能。並べ替える要素を指定。\n この引数は、ピボットテーブル レポートを並べ替えるときにのみ使用。 \n○Header \n ・省略可能。最初の行がタイトル行であるかどうかを指定します。\n  xlGuess:先頭行が見出しであるかどうかをExcelに自動で判断させます。\n  xlNo:既定値。範囲全体が並べ替えの対象となります。\n  xlYes:先頭行をタイトル行と見なし、それ以外の範囲が並べ替えられます。 \n○OrderCustom \n ・省略可能。\n 省略すると、通常の並べ替え順が使用。\n ユーザー設定の並べ替え順のリスト内の番号を示す、1から始まる整数を指定。 \n○MatchCase \n ・省略可能。\n○True :大文字と小文字を区別して並べ替えを行います。\n○False:大文字と小文字を区別しないで並べ替えを行います。 \n○Orientation \n ・省略可能。並べ替えの方向を指定します。\n  xlSortRows:既定値。行単位で並べ替えます。\n  xlSortColumns:列単位で並べ替えます。\n  (注)マクロの自動記録ではxlTopToBottom(行単位)と\n    xlLeftToRight(列単位)になります。\n○SortMethod \n ・省略可能。並べ替えの種類を指定。\n 選択またはインストールされている言語の設定 (たとえば、日本語)によって、これらのい くつかの定数が使用できない場合があります。\n xlPinYin:既定値。ふりがなを使う。\n xlStroke:ふりがなを使わない。文字コード順。 \n○DataOption1~3(注:Excel2002で追加された引数、以前のバージョンでは使えません) \n ・省略可能。n番目のキーのテキストを並べ替える方法を指定します。\n  xlSortNormal:既定値。数値データとテキスト データを別々に並べ替えます。\n  xlSortTextAsNumbers:テキストを数値データとして並べ替えます。\n\n \nデータリストがA1から始まり、行や列が順次増えたり減ったりして特定できないケース \n{{{\nSub sort3()\n  Dim lRow As Long\n  Dim lCol As Long\n  Dim myRng As Range\n    With Worksheets("Sheet1")\n      lRow = Cells(Rows.Count, 1).End(xlUp).Row\n      lCol = Cells(1, Columns.Count).End(xlToLeft).Column\n      Set myRng = .Range(Cells(1, 1), Cells(lRow, lCol))\n      myRng.Sort _\n        Key1:=.Range("G1"), _\n        Order1:=xlDescending, _\n        Header:=xlYes, _\n        Orientation:=xlTopToBottom\n    End With\nEnd Sub \n}}}\n\n\n
!!ブックを開いた時にブックを非表示\n    標準モジュール\n{{{\nSub Auto_Open()\n Windows("Book1.xls").Visible = False\n Load UserForm1\n UserForm1.Show\n Windows("Book1.xls").Visible = True\nEnd Sub\n}}}
保存してブックだけ閉じる\n{{{\nSub test2()  '\n Workbooks("BOOK1.XLS").Close SaveChanges:=True\n 'SaveChanges:=True は、True だけでもOK\nEnd Sub\n}}}\n現在のブックを保存してExcel自体も閉じる\n{{{\nSub test3()  '現在のブックを保存してExcel自体も閉じる\n ThisWorkbook.Saved = True\n Application.Quit\nEnd Sub\n}}}
コンボボックスに新しい文字列値を入力または選択したとき動作するイベントマクロ\n{{{\nPrivate Sub ComboBox1_Change() \n Worksheets("SSS").Range("E10").Value = ComboBox1.Text \n        '※2 選択結果をセルにセットする\nEnd Sub\n}}}\nTextプロパティで値を取得して、セルにセット\n[img[img/vba9.gif]]
●Syleプロパティ\n| 定数 | 値 | 説明 |\n|fmSyleDropDownCombo| 0 |文字列の入力とリストからの選択の両方が可能です。<br>(規定値)|\n|fmSyleDropDownList| 2 |文字列の入力はできません。<br>リストからの選択のみが可能です。|\n
  "A","BC"の列番号は何番? \n\n 列番号が 45 のアルファベットの表記は?\n \n   手で数えるのはすごく大変です!!\n{{{\n aa = Columns("BC").Column\n}}}\n とすることで Column番号 55 を得ることが出来ます。\n\n{{{\n aa = Columns(45).Column\n}}}\n とすれば $AS:$AS の列番号が得られます。\n \n $ が邪魔な時は\n{{{\n aa = Columns(45).Address(RowAbsolute:=False, ColumnAbsolute:=False)\n}}}\n とすることで、結果は AS:AS になります。\n
{{{\nSub RowCopy()\n ActiveCell.Offset(-1).EntireRow.Copy ActiveCell.EntireRow\nEnd Sub\n}}}
|=ASC(文字列)|■全角文字を半角にする|\n|=JIS(文字列)|■半角文字を全角にする|\n\n英字の場合、\n|=UPPER(文字列)|■UPPER関数で小文字を大文字に|\n|=LOWER(文字列)|■LOWER関数で大文字を小文字|\n|=PROPER(文字列)|■PROPER関数は、<br> 英単語の先頭文字を大文字にし、2文字目以降を小文字に|\n
例では、エクセルファイルを指定し\n同じフォームの オブジェクト名 inputfile にセット\n{{{\nPrivate Sub CommandButton2_Click()\nOn Error GoTo err\n \n Dim tmp As Variant\n\n tmp = Application.GetOpenFilename("Office File(*.xls;*.xla;*.doc;*.mdb), *.xls;*.xla;*.doc;*.mdb", , "Input File", , False)\n \n If tmp <> False Then\n Me.inputfile = tmp\n End If\n\nerr:\n'ignore\nEnd Sub\n}}}
セルを選択するには通常、Range または Cells のどちらかを使います。\n どちらかは好みです\n\n ★Range はどこのセルを参照しているのか感覚的にピンと来ます。\n\n ★Cells は 行・列 をループで廻す場合に便利です。\n\n \n ① Range("A1") スタイルの場合\n{{{\n For i = 1 To 10\n Range("A" & Format(i)).Select\n Next\n}}}\n      i を Format を使って文字に変換します。\n      「&」で文字の結合を行って、\n\n      "A" + "1" = "A1"    にしています。\n \n ② Cells(row,column) スタイルの場合\n\n この場合は、row と column に変数を使うだけです。\n{{{\n For xRow = 1 To 10\n For xColumn = 2 To 5\n Cells(xRow, xColumn).Select\n Next\n Next\n}}}\n\n[[列番号からアルファベットへ・アルファベットから列番号への変換]]
選択されたセルを順番に参照する方法\n\n あらかじめセルを選択しておいて、順番に参照する方法もあります。\n{{{\n Dim LoopArea As Range\n \n Set LoopArea = Selection\n\n For i = 1 To LoopArea.Count\n LoopArea.Cells(i).Value = i\n Next\n}}}\n\n この方法は飛び飛びにセルを選択した場合にはうまく行きません。\n
1.ローカル環境で動作するwiki(Webブラウザで動作可能)\n TiddlyWiki(javascript)\n http://www.tiddlywiki.com/\n GTDTiddlyWiki(javascript)(TiddlyWikiの改良版)\n http://shared.snapgrid.com/gtd_tiddlywiki.html\n\n2.サイトにTiddlyWikiを置くタイプ(FTPでアップロードが必要)\n PhpTiddlyWiki(javascript+php+my-sql)\n http://www.patrickcurry.com/tiddly/\n PerlTiddlyWiki(javascript+perl+sql) \n http://ccm.sherry.jp/tiddly/\n T's Wiki(javascript+Tcl+SQLite3)\n http://mega.ist.utl.pt/~tngd/twiki/twiki.cgi/\n Kamiwiki(javascript+php)\n http://rakusai.org/kamiwiki/\n---------------------\n3.設置例(TiddlyWiki)\n 自分のパソコン上で使える。文字飾りも豊富。\n\n TiddlyWikiの世界\n http://pasopia.velvet.jp/sub/tiddly/tiddlywiki.html\n TiddlyWikiの世界(Biglobeに設置してみました)\n http://www2s.biglobe.ne.jp/~ouji/tiddly/tiddlywiki.html\n TiddlyWikiの世界_TiddlyWikiを使い尽くそう!\n http://tsuzuki.main.jp/tiddly/tiddlywiki.html\n オムニバス通信(TaKMi)\n http://takmi.ciao.jp/tiddly_takmi/omni.html\n\n---------------------\n続・TiddlyWikiのメッセージを日本語化してみる。\n\nhttp://hsj.jp/works/2005/08/08/tiddlywiki_1.html \n\n\nTiddlyWikiの日本語化する。非常に参考になるサイトです。感謝感謝 \n\n!!気にっているマクロ&プラグイン\n私が気に入っているマクロやプラグインです。(自分の作ったマクロやプラグインは除きました)\n\n\nHoverMenuPlugin\n私のTiddlyWikiのサイトの右側に表示される小さなメニューです。”J”のジャンプは現在開いているページの指定ページに移動できるので便利です。\n\n入手先:Lewcid TW - a repository of my extensions for TW\n\n\nTWSaveSJPathPatch\n Firefoxでは全角文字列などのフォルダにTiddlyWikiのファイルを入れるとTiddyWikiの保存の時にエラーが発生して保存できません。でもこのパッチを入れることによりその問題が解消します。\n\n入手先:MemoWiki - メモ用Wiki by TiddlyWiki\n\n\nShowMyTiddlersPlugin\n 自分の作成した記事のみを表示します。マクロやプラグインなどを入れるときはadminなどのユーザ名で入力し、普段は自分の名前を入れておくと自分の記事のみを表示できて便利です。\n\n入手先:TiddlyWiki Style - Tips, Macros and FAQ\n\n\n各種の設定などを詳しく書いてあります。\nMemoWikiメモ用Wiki by TiddlyWiki\nhttp://flow.dip.jp/mt/archives/u/twmemo.html\n\n素敵なTiddlyWiki - カスタマイズノート\nhttp://www.geocities.jp/potto372/tiddlywiki/tiddlywikinote.html\n素敵なTiddlyWiki - カスタマイズノート2\nhttp://www.potto.client.jp/
以下のような引用を作ることができます。\n\n例1\n<<<\n引用内容1\n引用内容2\n引用内容3\n引用内容4\n<<<\n\n書式1\n{{{\n<<<\n引用内容1\n引用内容2\n引用内容3\n引用内容4\n<<<\n}}}\n\n例2\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n\n書式2\n{{{\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n}}}
選択した列データの最上行の空白セルにカーソルを移動するマクロ\n(この場合はxシートのA列)\n{{{\nSheets("x").Select\n          'xシートを選択\nRange("a65536").End(xlUp).Activate\n  'a列の最下行から上へ最初にデータの入っているセルをアクティブ\nActiveCell.Offset(1, 0).Activate\n    '1行下の空白セルにカーソルを移動\n}}}\n
//\n//処理内容表示\n//\nconfig.macros.search.label = "Wiki内検索";\nconfig.macros.search.successMsg = "%0 tiddlers found matching %1";\nconfig.macros.search.failureMsg = "No tiddlers found matching %0";\nconfig.macros.timeline.dateFormat = "YYYY年MM月DD日";\nconfig.macros.closeAll.label = "すべて閉じる";\nconfig.macros.closeAll.prompt = "編集されているもの以外の表示されているすべてTiddlerを閉じます。";\nconfig.macros.saveChanges.label = "保存";\nconfig.macros.saveChanges.prompt = "すべてのTiddlerを保存します。";\nconfig.macros.permaview.prompt = "現在表示されているTiddlerの状態を表示するURLです。"\nconfig.macros.newTiddler.label = "新規作成";\nconfig.macros.newTiddler.prompt = "新しいTiddlerを作成します。";\nconfig.macros.newJournal.label = "新規日報";\nconfig.macros.newJournal.prompt = "新しいTiddlerを現在の日時をタイトルとして作成します。";\n//\n//メッセージ関連\n//\nconfig.messages.dates.days = ["日", "月", "火", "水", "木", "金", "土"];\n
[[サンプルExcel|exls/engjpn.xls]]\n[img[img/engjpn.gif]] http://www.cs.k.tsukuba-tech.ac.jp/labo/koba/software/excel.html\n音声環境については,コントロールパネルを開いて「音声認識」アイコンがあり,\nその中の「音声合成」タブ内にMicrosoft SamとLH KenjiとLH Naokoの3つの音が発声できる環境\n(※)を想定しています.\n\nそこでText To Speech,TTSの登場です.TTSを使って,英語と日本語を切り替えながらしゃべらせることを考えました.英語を読ませるフリーソフトは結構ありますが,それをVBAで組むことで,Excelが入っている環境ならば「新しいソフトウェアのインストール」をしなくてもよいところが,このマクロのウリなわけです.しかもセルの中に数字と読ませたい英語,読ませたい日本語を入れるだけでよいので,英語の先生が楽に教材を用意できる...はず,なのです.(実際には,まぁ,パソコンアレルギーの人にはアレなわけですが)\n\n--------------------------------------------------------------------------------\n上下矢印キーで読み上げながら進む,戻る \nスペースキーで再読み上げ \nESCキーで終了 \nという操作で使います.\nもちろん終了してからデータの変更や入力もできます.\n\n読み上げさせたい英語や日本語をB列に入れ,\n英語の場合は左のA列のセルに1を,\n日本語の場合は2を入力しておいてください.\n実行ボタンにフォーム表示の命令を記述していますので,ボタンを押すと読み上げ確認ができます.\n--------------------------------------------------------------------------------\n{{{\nDim WithEvents Voice As SpVoice 'スピーチオブジェクトの定義\nDim SentenceNo As Integer '今読むべき行番号\n\n'初期化ルーチン\nPrivate Sub UserForm_Initialize()\nSet Voice = New SpVoice 'スピーチオブジェクト生成\n  SentenceNo = -1 '行番号の初期化\n  FrmMain.Width = 700 'ウィンドウサイズ,幅と高さの直接指定.\n  FrmMain.Height = 500 '画面サイズに合わせて適当に調整して下さい.\n  FrmMain.TextWord.Width = 700 'テキストボックスサイズ,幅と高さの直接指定.\n  FrmMain.TextWord.Height = 485 '画面サイズに合わせて適当に調整して下さい.\nEnd Sub\n}}}\n{{{\n'キーが押された動作\nPrivate Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)\n  Select Case KeyCode\n    Case 38 '上矢印キー\n      SentenceNo = SentenceNo - 1 '1行上に設定\n      If SentenceNo < 0 Then '最上行のクリッピング\n        SentenceNo = 0\n      End If\n      SpeakSentence (SentenceNo) '読み上げ命令\n    Case 32 'スペースキー\n      If SentenceNo < 0 Then '最初の場合だけ場合分け\n        SentenceNo = 0\n      End If\n      SpeakSentence (SentenceNo) '読み上げ命令\n    Case 40 '下矢印キー\n      SentenceNo = SentenceNo + 1 '1行下に設定\n      SpeakSentence (SentenceNo) '読み上げ命令\n    Case 27 ' ESCキー\n      End\n  End Select\nEnd Sub\n}}}\n{{{\n'読みあげ関数.引数は行番号.A列の数字によって英語か日本語どちらを発声するかを決める.\nPrivate Sub SpeakSentence(SentenceNo As Integer)\n  TextWord.Text = Range("B1").Offset(SentenceNo, 0)\n  If Range("A1").Offset(SentenceNo, 0) = 1 Then 'Aの列が1だったら英語発声\n    Voice.Speak vbNullString, SVSFPurgeBeforeSpeak '音声出力のカット\n    Set Voice.Voice = Voice.GetVoices().Item(2) 'MS Sam に設定\n    Voice.Speak TextWord, SVSFlagsAsync '音声出力\n  ElseIf Range("A1").Offset(SentenceNo, 0) = 2 Then 'Aの列が2だったら日本語発声.\n    Voice.Speak vbNullString, SVSFPurgeBeforeSpeak '音声出力のカット\n    Set Voice.Voice = Voice.GetVoices().Item(0) 'LH Kenji に設定.\n'ここの数字は環境によって違うかもしれないのでうまく発声しないときは色々試してください.\n    Voice.Speak TextWord, SVSFlagsAsync '音声出力\n  End If\nEnd Sub\n}}}\nつまり,A列を見てTTSを切り替えてる,ただそれだけです.TTSをExcelVBAから利用するには,Microsoft Speech Object Libraryを利用できるようにする必要があります.うまく動かない,という人はまずここを疑ってください.具体的な対処法は\n\nVBエディタ画面メニュー,「ツール」→「参照設定」をクリック \n「Microsoft Speech Object Library」にチェックが入っているか確認 \n入っていなかった場合はスクロールして該当するライブラリを探してチェックを入れる \nOKボタンを押す \nとなります.また,コードの後半部分「Item(数字)」が音声の種類を指定する部分です.もし英語なのに日本語の音声で読んでいる,という場合はこの数字を適当に入れ替えて保存,実行することで英語と日本語をうまく読むようになります.\n\n[[日本語・英語を読み上げる2]]\n[[日本語・英語を読み上げる3]]
■「Excel2002なんだけど,コンパネの音声合成にLH KenjiとNaokoがいないよ,という方へ.」\n\nコントロールパネルの「プログラムの追加と削除」を開く. \nOffice Xp ~の欄の変更をクリック. \nMicrosoft Excel for Windowsの左のプラスを押して展開. \n「読み上げ」のところのディスクアイコンをクリックしてマイコンピュータから実行を選択 \n「更新」をクリック. \nこれでケンジ君とナオコさんがインストールされます.\n\n■「Excel2000なんだけどXP使っててMS Samはあるから英語だけ読ませらんない?」という方へ.\n\nExcelファイルを開いた後,Escキーで一旦ウィンドウを閉じてAlt+F11を押す. \nVBエディタでフォームのコードを開く(下記参照) \n「読み上げ関数」部分のMS Samに設定の部分,Item(2)をItem(0)に変更. \n保存. \n結局3つある音声合成エンジンを0~2という数字で切り替えていますので,ひとつしかない場合にはこれが意味をなさないわけです.同様の理由で,音声合成エンジンがもっと多く入っている環境の場合や,インストールする順番によって発声種類の順番が変わってしまっている場合は,適宜数字を変更してみてください.\n\n[[日本語・英語を読み上げる1]]\n[[日本語・英語を読み上げる3]]
voice.Voice.Idを参照して文字列の最後で決めたら如何でしょうか? \n\nそこからオブジェクトブラウザでプロパティやメソッドを探して使えるものがないか確かめるという感じです。 \n{{{\nSub test() \nDim i As Integer, nm As String \nFor i = 1 To Voice.GetVoices().Count '(登録音声の数) \nnm = Voice.GetVoices().Item(i - 1).ID \nDo \nnm = Mid(nm, InStr(nm, "\s") + 1) \nIf InStr(nm, "\s") = 0 Then Exit Do \nLoop While True \nDebug.Print nm \nNext \nEnd Sub\n}}}\n\nDebug.Printとは、イミディエイトに書き出すということです。\n\n[[日本語・英語を読み上げる1]]\n[[日本語・英語を読み上げる2]]
!TiddlyWikiについて\n TiddlyWikiはJavaScriptをベースにしたローカル環境で利用できるWikiのひとつです。ひとつのHTMLファイルで構成されサーバを必要としないため,お手軽に利用できます。ご利用はお手軽ですが,機能は満載です。\n\nTiddlyWikiの最新情報が必要の方は,以下のサイトをご覧下さい。\n\nTiddlyWikiサイト\nhttp://www.tiddlywiki.com/\n\n*[[ダウンロード方法|DownloadSoftware]]
!!!入門篇\n<<tiddler 目次_入門篇>>\n!!!応用篇\n<<tiddler 目次_応用篇>>\n!!!Appendix\n*[[外部公開Tips]]\n*[[StyleSheet]]例\n*[[参考文献]]\n\n----
!!太文字\n例 ''Bold''\n\n書式\n{{{\n''Bold''\n}}}\n\n!!打消線\n例 ==Strike==\n\n書式\n{{{\n==Strike==\n}}}\n\n!!アンダーライン\n\n例 __Underline__\n\n書式\n{{{\n__Underline__\n}}}\n\n!!イタリック\n例//Italic//\n書式\n{{{\n//Italic//\n}}}\n\n!!上付き文字\n例 2^^3^^=8\n書式\n{{{\n2^^3^^=8\n}}}\n!!下付き文字\n例 a~~ij~~ = -a~~ji~~\n書式\n{{{\na~~ij~~ = -a~~ji~~\n}}}\n\n!!ハイライト\n例 @@highlight@@\n書式\n{{{\n@@highlight@@\n}}}\n\n!!カラー\n例 @@color(green):green colored@@\n書式\n{{{\n@@color(green):green colored@@\n}}}\n\n!!バックグランドカラー\n例 @@bgcolor(#a0ffa0):バックグランドカラー@@\n{{{\n@@bgcolor(#a0ffa0):カラー@@\n}}}\n\n!!横線\n\n----\n\n書式\n{{{\n----\n}}}\n\n\n!!ヘッダ\n\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n\n書式\n{{{\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n}}}\n!!文字列に囲み線をつける\n\n''使用方法''\n{{{\n<<box "box macro sample">>\n}}}\n\n''実行例''\n<<box "box macro sample">>\n\n!!記事の折りたたみ\n{{{\n<<slider chkSampleSlider MainMenu "メニュー" "メインメニュー内容表示">>\n}}}\n<<slider chkSampleSlider MainMenu "メニュー" "メインメニュー内容表示">>\n
# [[書式]]\n# [[早速使ってみる]]\n# [[書き方(詳細)]]\n# [[カスタマイズする]]\n# [[バージョンアップ手順]]
Dim E_rw As Long\nE_rw = Range("A65000").End(xlUp).Row \n
1.空白の行に色をつけたい\n2.左右の文字に該当する物に、色を付ける\n3.一部が合致した行に、色を付ける\n4.セルが結合されている時\n5.一番の人に、色を付ける\n6.データの入っているセルに罫線を付ける\n7.ロックされているセルに色を付ける\n8.上位3位に色を付ける\n9.5行ごとに実線を入れる\n10.○○を含むセルに色を付ける。\n\n\n1.空白の行に色をつけたい\n[img[img/vba06_1.jpg]]\n   空白の列に入れをつけたい場合はA$1\n\n2.左右の文字に該当する物に、色を付ける\n[img[img/vba06_2.jpg]]\n\n3.一部が合致した行に、色を付ける\n[img[img/vba06_3.jpg]]\n「東京都」が付いた行に付けたい時。\nそんな時はFIND関数を使って・・・\n=FIND("東京都",$A1)\n\nSEARCH関数でも同じように出来ます。\n\nSEARCH関数では、\n半角の疑問符 (?) または半角のアスタリスク (*) を\nワイルドカード文字として使用することができます。\nFIND 関数では英字の大文字と小文字を区別できる代わりに、\nワイルドカード文字を使用することができません\n\n4.セルが結合されている時\n[img[img/vba06_4.jpg]]\n$A1:$A2となっているところがポイント\n\n5.一番の人に、色を付ける\n[img[img/vba06_5.jpg]]\nこれは「空白のセルには罫線を付けない」と考えると、簡単\n\n[img[img/vba06_7.jpg]]\nこの場合、エラー値の場合には罫線が付きません\n\n6.データの入っているセルに罫線を付ける\n[img[img/vba06_6.jpg]]\n\n7.ロックされているセルに色を付ける\n[img[img/vba06_8.jpg]]\n[[CELL]]("protect",対象範囲)で、セルがロックされていなければ 0、ロックされていれば 1を表します。\nそれを利用\n\n8.上位3位に色を付ける\n[img[img/vba06_9.jpg]]\n\n9.5行ごとに実線を入れる\n[img[img/vba06_10.jpg]]\n使うのはMODとROWです。\n最初が何行目から始まるかによって、プラスする数は変わってきますね。\n書式を選ぶ時は、周りの線を消さないように、実線を選びましょう^^\n\n10.○○を含むセルに色を付ける。\n[img[img/vba06_11.jpg]]\n*(アスタリスク)を使ってワイルドカードを使います。
条件によって異なったステートメントを実行します。 \nA:セル範囲B1:B5で値が\n 1の時は赤色、2の時は黄色、3の時は水色、それ以外の時は緑色\n でセルを塗りつぶします。\n{{{\nSub rei03()\n Dim myRng As Range\n Dim c As Range\n Set myRng = Range("B1:B5")\n  For Each c In myRng\n    Select Case c.Value\n      Case 1\n        c.Interior.ColorIndex = 3 '赤\n      Case 2\n        c.Interior.ColorIndex = 6 '黄\n      Case 3\n        c.Interior.ColorIndex = 8 '水色\n      Case Else\n        c.Interior.ColorIndex = 10 '緑\n    End Select\n  Next c\nEnd Sub \n}}}\n実行結果\n[img[img/vba06_01.gif]]\n\nB:条件範囲の書き方1 \n セル範囲B1:B6で値が\n 1と3の時は赤色、2と4の時は黄色、5の時は水色、それ以外の時は緑色\n でセルを塗りつぶします。\n\n{{{\nSub rei03()\n Dim myRng As Range\n Dim c As Range\n Set myRng = Range("B1:B6")\n  For Each c In myRng\n    Select Case c.Value\n      Case 1, 3\n        c.Interior.ColorIndex = 3 '赤\n      Case 2, 4\n        c.Interior.ColorIndex = 6 '黄\n      Case 5\n        c.Interior.ColorIndex = 8 '水色\n      Case Else\n        c.Interior.ColorIndex = 10 '緑\n    End Select\n  Next c\nEnd Sub \n}}}\n実行結果\n[img[img/vba06_04.gif]]\n\nC:条件範囲の書き方2 \n セル範囲B1:B5で値が\n 10未満の時は赤色、20未満の時は黄色、30未満の時は水色、それ以外の時は緑色\n でセルを塗りつぶします。 \n{{{\nSub rei04()\n Dim myRng As Range\n Dim c As Range\n Set myRng = Range("B1:B5")\n  For Each c In myRng\n    Select Case c.Value\n      Case Is < 10\n        c.Interior.ColorIndex = 3 '赤\n      Case Is < 20\n        c.Interior.ColorIndex = 6 '黄\n      Case Is < 30\n        c.Interior.ColorIndex = 8 '水色\n      Case Else\n        c.Interior.ColorIndex = 10 '緑\n    End Select\n  Next c\nEnd Sub \n}}}\n[img[img/vba06_02.gif]]\n\nD:条件範囲の書き方3 \n セル範囲B1:B5で値が\n 1以上9以下の時は赤色、10以上19以下の時は黄色、20以上29以下の時は水色、\n それ以外の 時は緑色\n でセルを塗りつぶします。 \n{{{\nSub rei04()\n Dim myRng As Range\n Dim c As Range\n Set myRng = Range("B1:B5")\n  For Each c In myRng\n    Select Case c.Value\n      Case 1 To 9\n        c.Interior.ColorIndex = 3 '赤\n      Case 10 To 19\n        c.Interior.ColorIndex = 6 '黄\n      Case 20 To 29\n        c.Interior.ColorIndex = 8 '水色\n      Case Else\n        c.Interior.ColorIndex = 10 '緑\n    End Select\n  Next c\nEnd Sub \n}}}\n[img[img/vba06_03.gif]]
条件によって異なったステートメントを実行します。 \nセル範囲B1:B5で値が\n1の時は赤色、2の時は黄色、3の時は水色、それ以外の時は緑色\nでセルを塗りつぶします。 \n{{{\nSub rei02()\n Dim myRng As Range\n Dim c As Range\n Set myRng = Range("B1:B5")\n  For Each c In myRng\n    If c.Value = 1 Then\n      c.Interior.ColorIndex = 3 '赤\n    ElseIf c.Value = 2 Then\n      c.Interior.ColorIndex = 6 '黄\n    ElseIf c.Value = 3 Then\n      c.Interior.ColorIndex = 8 '水色\n    Else\n      c.Interior.ColorIndex = 10 '緑\n    End If\n  Next c\nEnd Sub \n}}}\n実行結果\n[img[img/vba06_01.gif]]
[img[img/mitico.gif]]\n\n
検証中   [[サンプルExcel|exls/select.xls]]\n[img[img/mitico.gif]]\nワークシートに入力した住所録のデータから、\n指定した人数を無作為に選び出すマクロ。 \nマクロの実行は、ワークシートに貼り付けた\nコマンドボタンのClickイベントプロシージャで行います。\nマクロの先頭で、抽出する人数をユーザーに入力してもらいます。\n人数の入力にはインプットボックスを使い、\n指定したセル範囲からその人数分の指名を抜き出します。\n指名の抜き出しには乱数を使用して、\nランダムにセル番地を作成します。\nただし、同じ人が何回も選ばれないように、\n一度抽出した氏名のセルと同じ行にある他の列のセルに*マークを付け、\nそのマークのない人を選ぶようにしています。\n\n\n1. コード全文\n{{{\nPrivate Sub CommandButton1_Click()\n    Dim Ret As Integer, i As Integer, Num As Integer\n    i = 0\n\n    On Error GoTo FAIL\n    Num = CInt(InputBox("当選者は何人にしますか?(20人以下)"))\n\n    If Num > 20 Then\n        MsgBox ("20人以下を入力して下さい")\n        GoTo FAIL\n    End If\n\n    Columns("F:F").ClearContents\n    While i < Num\n        Ret = Int((20 * Rnd) + 1) + 1\n        If Cells(Ret, 4).Value <> "*" Then\n            Cells(Ret, 4) = "*"\n            i = i + 1\n            Cells(Ret, 1).Copy Destination:=Cells(2 + i, 6)\n        End If\n    Wend\n    Columns("D:D").ClearContents\n    Range("A1").Select\nFAIL:\nEnd Sub\n}}}\n\n[[氏名一覧から無作為に抽選する2]]
2.ワークシートの準備\n\nまずはじめに、ワークシートに氏名一覧を入力しておきます。ここでは、20人分の住所録を使います。郵便番号や住所が入力されていますが、使用するのは氏名の列だけです。\nそして、データが入力されている最後の列の隣の列(この例では列「D」)の文字色をセルの塗りつぶし色にしておきます(ここでは白色)。というのも、この列に一度抽出されたことを記す*マークを入力するためです。このマークはすぐに消しますが、他人には見えないようにするためです。\nそして、その横にコマンドボタンを1つ配置します。\n\n\nワークシートに配置した「抽選開始」ボタンを押すと、抽出する人数を入力するインプットボックスが表示されますので、ここに人数を入力します。\n\nOKボタンを押すと、乱数を使って無作為にセル番地を作成し、そのA列にある氏名をコピーします。\n\n\n3.コードの作成\n\n最初に変数を3つ用意します。\n{{{\nDim Ret As Integer, i As Integer, Num As Integer\n}}}\n変数「Ret」乱数が作成する数値を整数に変換した値を格納する\n変数「i」ループ処理のカウンタに使用する\n変数「Num」インプットボックスに入力された人数を格納する\n\nまた、変数iを0に初期化しておきます。\n{{{\ni = 0\n}}}\n\n次は、インプットボックスを表示し、抽出する人数をユーザーに入力してもらいます。インプットボックスの表示は、InputBox関数を使用します。この関数は、引数に表示文字列を指定し実行すると、1行入力フィールドと「OK」「キャンセル」の2つのボタンを持った小さなダイアログボックスを表示します。\nそして、OKボタンを押すと1行入力フィールドに入力された値を、キャンセルボタンを押すと空白の文字列を関数の戻り値として返してきます。\nこれを、変数Numで受け取ります。\n\nNum = (InputBox("当選者は何人にしますか?(20人以下)"))\n\nただし、OKボタンを押したときに返ってくる値はすべて文字列で、数値データが入力されても「数字」として返ってきます。そこで、数字を整数値データに変換する関数「CInt」と組み合わせ、整数値に変換してから変数Numに格納します。\n\nNum = CInt(InputBox("当選者は何人にしますか?(20人以下)"))\n\nここで問題になるのが、ユーザーが数字を入力せずに、「あ」とか「へ」とか、「A」「B」などの文字を入力してしまった場合です。こうなると、文字列を整数に変換する関数CIntはエラーになってしまいます 。また、キャンセルボタンが押された場合も同様で、InputBox関数が返してくる空白の文字列を整数に変換できませんから、やはりこの式はエラーになります。\nそこで、ここにエラー処理ステートメントである「On Error 」ステートメントをセットしておきます。\n\nOn Error GoTo FAIL\n    Num = CInt(InputBox("当選者は何人にしますか?(20人以下)"))\n\n\nもう1つ、エラー処理を用意します。それは、もしちゃんと数字が入力された場合でも、その数字が、セルに入力されている人数よりも多い場合です。この場合は、正しい抽出が行われませんから、入力値を減らすようなメッセージボックスを表示して、このClickイベントプロシージャを終了させます。\n\nIf Num > 20 Then\n        MsgBox ("20人以下を入力して下さい")\n        GoTo FAIL\n    End If\n\n\nインプットボックスに問題なく数字が入力された場合は、その数字分セル番地を作成します。\nまず、抽出した氏名を入力する欄をすべて消去しておきます。ここでは、列Fがその列なので、これを操作対象に指定し、ClearContentsメソッドを実行します。\n\n    Columns("F:F").ClearContents\n\n次に、Whileループを用意します。ループの回数はインプットボックスで入力された人数「Num」です。\n\n    While i < Num\n\nそして、セル番地を作成します。まず、Rnd関数とInt関数を組み合わせ、乱数を発生させてその値を整数値に変換します。次の式は20とおりの乱数を発生させる式です。もし100通りの乱数を発生させたければ、式の中の「20」を「100」に変えるだけです。\n式の結果は、変数「Ret」に格納しておきます。\n\n        Ret = Int((20 * Rnd) + 1) + 1\n\n\n乱数ができたら、それをCellsプロパティの「行」の位置にセットし、その位置のD列のセルの値を調べます。もしここに「*」マークが入っていなければ、そのセルははじめて抽選されたので、その位置に「*」マークをいれるとともに、その行のA列の氏名を列Fにコピーします。\nそして、ループのカウンタ変数iを1つ増やしておきます。\n\n        If Cells(Ret, 4).Value <> "*" Then\n            Cells(Ret, 4) = "*"\n            i = i + 1\n            Cells(Ret, 1).Copy Destination:=Cells(2 + i, 6)\n        End If\n    Wend\n\nこの処理は、ループのカウンタ変数iが変数Num未満である限り繰り返されます。すなわち、インプットボックスに入力した人数分繰り返され、氏名の抽出が行われることになります。\n\n\n人数分の抽出が完了したら、*マークを付けたセルの値を削除し、セルA1を選択状態にして終了します。  \n      \n    Columns("D:D").ClearContents\n    Range("A1").Select\nFAIL:\nEnd Sub\n\n最後に、On ErrorステートメントやGoToステートメントでのジャンプ先となるラベル「FAIL」を作成して出来上がりです。\n[[氏名一覧から無作為に抽選する]]
# [[はじめまして♪]]\n# [[早速使ってみる]]\n# [[書き方(詳細)]]\n# [[カスタマイズする]]
!箇条書きの書き方\n箇条書きは*を用いて書きます。*の数を増やすとさらにその下の階層の箇条書きとなります。\n\n例\n*箇条書き1\n**箇条書き1-1\n**箇条書き1-2\n**箇条書き1-3\n*箇条書き2\n**箇条書き2-1\n**箇条書き2-2\n**箇条書き2-3\n\n書式\n----\n{{{\n*箇条書き1\n**箇条書き1-1\n**箇条書き1-2\n**箇条書き1-3\n*箇条書き2\n**箇条書き2-1\n**箇条書き2-2\n**箇条書き2-3\n}}}\n----\n\n
!~WikiWordの自動リンク抑止\n自動リンクされてしまう文字列は先頭に''~''をつけることでリンクを抑止できます。\n{{{\n~WikiWord\n}}}\n~WikiWord\n
自己パス名を取得(その1)最後に¥付き\n\nMyPath = Left(ActiveWorkbook.FullName, _\n\nLen(ActiveWorkbook.FullName) - Len(ActiveWorkbook.Name))\n\n \n\n自己パス名を取得(その2)最後に¥なし\n\n ActiveWorkbook.Path\n\n
{{exClass{\n\n!!基本16色パレット \n|>|>| 基本16色パレット |\n|bgcolor(Black):color(#fff):Black|bgcolor(Red):color(#fff):Red|bgcolor(Maroon):color(#fff):Maroon|\n|bgcolor(Gray):color(#fff):Gray|bgcolor(Yellow):color(#fff):Yellow|bgcolor(Olive):color(#fff):Olive|\n|bgcolor(Silver):color(#fff):Silver|bgcolor(Lime):color(#fff):Lime|bgcolor(Green):color(#fff):Green|\n|bgcolor(White):color(#000):White|bgcolor(Aqua):color(#fff):Aqua|bgcolor(Teal):color(#fff):Teal|\n||bgcolor(Blue):color(#fff):Blue|bgcolor(Navy):color(#fff):Navy|\n||bgcolor(Fuchsia):color(#fff):Fuchsia|bgcolor(Purple):color(#fff):Purple|\n\n!!216色パレット \n|>|>|>|>|>| 216色パレット |\n|bgcolor(#000000):color(#fff):#000000|bgcolor(#003300):color(#fff):#003300|bgcolor(#006600):color(#fff):#006600|bgcolor(#009900):color(#fff):#009900|bgcolor(#00CC00):color(#fff):#00CC00|bgcolor(#00FF00):color(#fff):#00FF00|\n|bgcolor(#000033):color(#fff):#000033|bgcolor(#003333):color(#fff):#003333|bgcolor(#006633):color(#fff):#006633|bgcolor(#009933):color(#fff):#009933|bgcolor(#00CC33):color(#fff):#00CC33|bgcolor(#00FF33):color(#fff):#00FF33|\n|bgcolor(#000066):color(#fff):#000066|bgcolor(#003366):color(#fff):#003366|bgcolor(#006666):color(#fff):#006666|bgcolor(#009966):color(#fff):#009966|bgcolor(#00CC66):color(#fff):#00CC66|bgcolor(#00FF66):color(#fff):#00FF66|\n|bgcolor(#000099):color(#fff):#000099|bgcolor(#003399):color(#fff):#003399|bgcolor(#006699):color(#fff):#006699|bgcolor(#009999):color(#fff):#009999|bgcolor(#00CC99):color(#fff):#00CC99|bgcolor(#00FF99):color(#fff):#00FF99|\n|bgcolor(#0000CC):color(#fff):#0000CC|bgcolor(#0033CC):color(#fff):#0033CC|bgcolor(#0066CC):color(#fff):#0066CC|bgcolor(#0099CC):color(#fff):#0099CC|bgcolor(#00CCCC):color(#fff):#00CCCC|bgcolor(#00FFCC):color(#fff):#00FFCC|\n|bgcolor(#0000FF):color(#fff):#0000FF|bgcolor(#0033FF):color(#fff):#0033FF|bgcolor(#0066FF):color(#fff):#0066FF|bgcolor(#0099FF):color(#fff):#0099FF|bgcolor(#00CCFF):color(#fff):#00CCFF|bgcolor(#00FFFF):color(#fff):#00FFFF|\n|bgcolor(#330000):color(#fff):#330000|bgcolor(#333300):color(#fff):#333300|bgcolor(#336600):color(#fff):#336600|bgcolor(#339900):color(#fff):#339900|bgcolor(#33CC00):color(#fff):#33CC00|bgcolor(#33FF00):color(#fff):#33FF00|\n|bgcolor(#330033):color(#fff):#330033|bgcolor(#333333):color(#fff):#333333|bgcolor(#336633):color(#fff):#336633|bgcolor(#339933):color(#fff):#339933|bgcolor(#33CC33):color(#fff):#33CC33|bgcolor(#33FF33):color(#fff):#33FF33|\n|bgcolor(#330066):color(#fff):#330066|bgcolor(#333366):color(#fff):#333366|bgcolor(#336666):color(#fff):#336666|bgcolor(#339966):color(#fff):#339966|bgcolor(#33CC66):color(#fff):#33CC66|bgcolor(#33FF66):color(#fff):#33FF66|\n|bgcolor(#330099):color(#fff):#330099|bgcolor(#333399):color(#fff):#333399|bgcolor(#336699):color(#fff):#336699|bgcolor(#339999):color(#fff):#339999|bgcolor(#33CC99):color(#fff):#33CC99|bgcolor(#33FF99):color(#fff):#33FF99|\n|bgcolor(#3300CC):color(#fff):#3300CC|bgcolor(#3333CC):color(#fff):#3333CC|bgcolor(#3366CC):color(#fff):#3366CC|bgcolor(#3399CC):color(#fff):#3399CC|bgcolor(#33CCCC):color(#fff):#33CCCC|bgcolor(#33FFCC):color(#fff):#33FFCC|\n|bgcolor(#3300FF):color(#fff):#3300FF|bgcolor(#3333FF):color(#fff):#3333FF|bgcolor(#3366FF):color(#fff):#3366FF|bgcolor(#3399FF):color(#fff):#3399FF|bgcolor(#33CCFF):color(#fff):#33CCFF|bgcolor(#33FFFF):color(#fff):#33FFFF|\n|bgcolor(#660000):color(#fff):#660000|bgcolor(#663300):color(#fff):#663300|bgcolor(#666600):color(#fff):#666600|bgcolor(#669900):color(#fff):#669900|bgcolor(#66CC00):color(#fff):#66CC00|bgcolor(#66FF00):color(#fff):#66FF00|\n|bgcolor(#660033):color(#fff):#660033|bgcolor(#663333):color(#fff):#663333|bgcolor(#666633):color(#fff):#666633|bgcolor(#669933):color(#fff):#669933|bgcolor(#66CC33):color(#fff):#66CC33|bgcolor(#66FF33):color(#fff):#66FF33|\n|bgcolor(#660066):color(#fff):#660066|bgcolor(#663366):color(#fff):#663366|bgcolor(#666666):color(#fff):#666666|bgcolor(#669966):color(#fff):#669966|bgcolor(#66CC66):color(#fff):#66CC66|bgcolor(#66FF66):color(#fff):#66FF66|\n|bgcolor(#660099):color(#fff):#660099|bgcolor(#663399):color(#fff):#663399|bgcolor(#666699):color(#fff):#666699|bgcolor(#669999):color(#fff):#669999|bgcolor(#66CC99):color(#fff):#66CC99|bgcolor(#66FF99):color(#fff):#66FF99|\n|bgcolor(#6600CC):color(#fff):#6600CC|bgcolor(#6633CC):color(#fff):#6633CC|bgcolor(#6666CC):color(#fff):#6666CC|bgcolor(#6699CC):color(#fff):#6699CC|bgcolor(#66CCCC):color(#fff):#66CCCC|bgcolor(#66FFCC):color(#fff):#66FFCC|\n|bgcolor(#6600FF):color(#fff):#6600FF|bgcolor(#6633FF):color(#fff):#6633FF|bgcolor(#6666FF):color(#fff):#6666FF|bgcolor(#6699FF):color(#fff):#6699FF|bgcolor(#66CCFF):color(#fff):#66CCFF|bgcolor(#66FFFF):color(#fff):#66FFFF|\n|bgcolor(#990000):color(#fff):#990000|bgcolor(#993300):color(#fff):#993300|bgcolor(#996600):color(#fff):#996600|bgcolor(#999900):color(#fff):#999900|bgcolor(#99CC00):color(#fff):#99CC00|bgcolor(#99FF00):color(#fff):#99FF00|\n|bgcolor(#990033):color(#fff):#990033|bgcolor(#993333):color(#fff):#993333|bgcolor(#996633):color(#fff):#996633|bgcolor(#999933):color(#fff):#999933|bgcolor(#99CC33):color(#fff):#99CC33|bgcolor(#99FF33):color(#fff):#99FF33|\n|bgcolor(#990066):color(#fff):#990066|bgcolor(#993366):color(#fff):#993366|bgcolor(#996666):color(#fff):#996666|bgcolor(#999966):color(#fff):#999966|bgcolor(#99CC66):color(#fff):#99CC66|bgcolor(#99FF66):color(#fff):#99FF66|\n|bgcolor(#990099):color(#fff):#990099|bgcolor(#993399):color(#fff):#993399|bgcolor(#996699):color(#fff):#996699|bgcolor(#999999):color(#fff):#999999|bgcolor(#99CC99):color(#fff):#99CC99|bgcolor(#99FF99):color(#fff):#99FF99|\n|bgcolor(#9900CC):color(#fff):#9900CC|bgcolor(#9933CC):color(#fff):#9933CC|bgcolor(#9966CC):color(#fff):#9966CC|bgcolor(#9999CC):color(#fff):#9999CC|bgcolor(#99CCCC):color(#fff):#99CCCC|bgcolor(#99FFCC):color(#fff):#99FFCC|\n|bgcolor(#9900FF):color(#fff):#9900FF|bgcolor(#9933FF):color(#fff):#9933FF|bgcolor(#9966FF):color(#fff):#9966FF|bgcolor(#9999FF):color(#fff):#9999FF|bgcolor(#99CCFF):color(#fff):#99CCFF|bgcolor(#99FFFF):color(#fff):#99FFFF|\n|bgcolor(#CC0000):color(#fff):#CC0000|bgcolor(#CC3300):color(#fff):#CC3300|bgcolor(#CC6600):color(#fff):#CC6600|bgcolor(#CC9900):color(#fff):#CC9900|bgcolor(#CCCC00):color(#fff):#CCCC00|bgcolor(#CCFF00):color(#fff):#CCFF00|\n|bgcolor(#CC0033):color(#fff):#CC0033|bgcolor(#CC3333):color(#fff):#CC3333|bgcolor(#CC6633):color(#fff):#CC6633|bgcolor(#CC9933):color(#fff):#CC9933|bgcolor(#CCCC33):color(#fff):#CCCC33|bgcolor(#CCFF33):color(#fff):#CCFF33|\n|bgcolor(#CC0066):color(#fff):#CC0066|bgcolor(#CC3366):color(#fff):#CC3366|bgcolor(#CC6666):color(#fff):#CC6666|bgcolor(#CC9966):color(#fff):#CC9966|bgcolor(#CCCC66):color(#fff):#CCCC66|bgcolor(#CCFF66):color(#fff):#CCFF66|\n|bgcolor(#CC0099):color(#fff):#CC0099|bgcolor(#CC3399):color(#fff):#CC3399|bgcolor(#CC6699):color(#fff):#CC6699|bgcolor(#CC9999):color(#fff):#CC9999|bgcolor(#CCCC99):color(#fff):#CCCC99|bgcolor(#CCFF99):color(#fff):#CCFF99|\n|bgcolor(#CC00CC):color(#fff):#CC00CC|bgcolor(#CC33CC):color(#fff):#CC33CC|bgcolor(#CC66CC):color(#fff):#CC66CC|bgcolor(#CC99CC):color(#fff):#CC99CC|bgcolor(#CCCCCC):color(#fff):#CCCCCC|bgcolor(#CCFFCC):color(#fff):#CCFFCC|\n|bgcolor(#CC00FF):color(#fff):#CC00FF|bgcolor(#CC33FF):color(#fff):#CC33FF|bgcolor(#CC66FF):color(#fff):#CC66FF|bgcolor(#CC99FF):color(#fff):#CC99FF|bgcolor(#CCCCFF):color(#fff):#CCCCFF|bgcolor(#CCFFFF):color(#fff):#CCFFFF|\n|bgcolor(#FF0000):color(#fff):#FF0000|bgcolor(#FF3300):color(#fff):#FF3300|bgcolor(#FF6600):color(#fff):#FF6600|bgcolor(#FF9900):color(#fff):#FF9900|bgcolor(#FFCC00):color(#fff):#FFCC00|bgcolor(#FFFF00):color(#fff):#FFFF00|\n|bgcolor(#FF0033):color(#fff):#FF0033|bgcolor(#FF3333):color(#fff):#FF3333|bgcolor(#FF6633):color(#fff):#FF6633|bgcolor(#FF9933):color(#fff):#FF9933|bgcolor(#FFCC33):color(#fff):#FFCC33|bgcolor(#FFFF33):color(#fff):#FFFF33|\n|bgcolor(#FF0066):color(#fff):#FF0066|bgcolor(#FF3366):color(#fff):#FF3366|bgcolor(#FF6666):color(#fff):#FF6666|bgcolor(#FF9966):color(#fff):#FF9966|bgcolor(#FFCC66):color(#fff):#FFCC66|bgcolor(#FFFF66):color(#fff):#FFFF66|\n|bgcolor(#FF0099):color(#fff):#FF0099|bgcolor(#FF3399):color(#fff):#FF3399|bgcolor(#FF6699):color(#fff):#FF6699|bgcolor(#FF9999):color(#fff):#FF9999|bgcolor(#FFCC99):color(#fff):#FFCC99|bgcolor(#FFFF99):color(#fff):#FFFF99|\n|bgcolor(#FF00CC):color(#fff):#FF00CC|bgcolor(#FF33CC):color(#fff):#FF33CC|bgcolor(#FF66CC):color(#fff):#FF66CC|bgcolor(#FF99CC):color(#fff):#FF99CC|bgcolor(#FFCCCC):color(#fff):#FFCCCC|bgcolor(#FFFFCC):color(#00):#FFFFCC|\n|bgcolor(#FF00FF):color(#fff):#FF00FF|bgcolor(#FF33FF):color(#fff):#FF33FF|bgcolor(#FF66FF):color(#fff):#FF66FF|bgcolor(#FF99FF):color(#fff):#FF99FF|bgcolor(#FFCCFF):color(#fff):#FFCCFF|bgcolor(#FFFFFF):color(#000):#FFFFFF|\n\n}}}
http://blog.livedoor.jp/andrewj/archives/\n\n\n{{{\nPrivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)\n Application.ScreenUpdating = True\nEnd Sub\n}}}\n[img[img/vba10_1.gif]]\n\n{{{\n=CELL("row")=ROW()\n}}}\nセルを選択すると、その行が自動的にハイライトになります。\n\n[img[img/vba10_2.gif]]\n\n[[行の自動的ハイライト2]]\n
http://blog.livedoor.jp/andrewj/archives/\n\n\nまず、SelectionChangeのEventコードを入力します。\n\nシートのみの場合、\n{{{\nPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)\n    Application.ScreenUpdating = True\nEnd Sub\n}}}\nブックの場合、\n{{{\nPrivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)\n    Application.ScreenUpdating = True\nEnd Sub\n}}}\n[img[img/vba11_1.gif]]\nそして、ハイライトの範囲に、この2つの条件付書式を入力します。(1つ目の書式を入力しなくてもオーケーです)\n{{{\n=CELL("address")=ADDRESS(ROW(),COLUMN())\n}}}\n{{{\n=OR(AND(CELL("row")=ROW(),CELL("col")+1>COLUMN()),AND(CELL("col")=COLUMN(),CELL("row")+1>ROW()))\n\n}}}\n\n結果はこうです。\n[img[img/vba11_2.gif]]\n\n\n\nハイライトされるとき以外、このやり方は、元の書式に影響ありません。(セルの書式に元通り戻ります)  \n
*[[どのシートでブックを閉じても起動時シート1が開くようにする]]\n*[[ブックを「閉じるとき」に自動的に保存する]]\n*[[基マクロでBookを閉じる]]\n*[[何よりも先にユーザーフォームを表示]]\n*[[基礎 - アップロード(新)]]\n**[[基礎 - アップロード(旧)]]\n\n**[[基礎 - スタイル変更について]]\n**[[基礎 - スタイル変更手順例]]
{{{\nPrivate Sub UserForm_Initialize() \n 'ユーザーフォームを初期化する\n ComboBox1.ColumnCount = 2 \n 'コンボボックスの列は2列にする\n For I = 0 To 7 \n 'Iが0から7まで(2行-2から9行-2まで)\n ComboBox1.AddItem Worksheets("名簿").Cells(I + 2, 1).Value \n '名簿シートのA列\n ComboBox1.List(I, 1) = Worksheets("名簿").Cells(I + 2, 2).Value\n '同じくB列\n Next '繰り返す\n ComboBox1.TextColumn = 2 '選択されたら2列目を表示する\nEnd Sub\n}}}\n[img[img/vba8-1.gif]][img[img/vba8-2.gif]]\n\n※TextColumnプロパティで、選択されたときに格納する列を設定
.SelStart ⇒選択位置を取得\n.SelLength ⇒選択されている文字数\n.SelText  ⇒選択されている文字の内容\n\n[img[img/vb03-01.jpg]]\n\n{{{\nPrivate Sub CommandButton1_Click()\n With TextBox1\n Msgbox "選択位置:" & .SelStart & vbCrLf & "選択している文字数:" & .SelLength & vbCrLf & "選択している文字列:" & .SelText\nEnd With\nEnd Sub\n}}}\n[img[img/vb03-02.jpg]]\n{{{\nPrivate Sub CommandButton1_Click()\n With TextBox1\n .SelStart=0\n .SelLength=4\n .SelText="EXCEL"\nEnd With\nEnd Sub\n}}}
A1 から A5 以下のデータが入っているとき、重複データには@をつけるようにします。\n|!|! A |! B |!|\n|!1| a | |B1 に =IF(COUNTIF($A$1:A1,A1)>1,"@","")|\n|!2| a | @ |と入力し、B2 以後にコピーしてください|\n|!3| b | |  COUNTIF(範囲,検索値)範囲内で検索値の数を数える|\n|!4|c||IF(数式,真のとき,偽のとき)数式の真偽で表示する|\n|!5|b|@||    \n\n<解説Ⅰ> B2 ・B4 を例にとるならば、\n B2には=IF(COUNTIF($A$1:A2,A2)>1,"*","") の計算式がコピーされています。\n  COUNTIF($A$1:A2,A2) これは A1 から A2 の範囲で A2(a)の数を数えます。\n  計算結果は 2 です。これは 2 > 1 は真ですから * が表示されます。\n B4 は =IF(COUNTIF($A$1:A4,A4)>1,"*","") の値です。 \n  COUNTIF($A$1:A4,A4) は A1 から A4 の範囲で A4(c)の数を数えます。\n  計算結果は 1 です。これは 1 > 1 は偽ですから "" の空白が表示されます。\n\n※今回の計算式の中に $A$1 という絶対参照が使われています。この絶対参照については、「構成比を求める」を参照してください。 \n\n
COUNTIF は条件に合うデータの個数を数える関数ですが、これを利用すると、\n重複データを入力できなくなる\n\nA2 をクリックして、[データ]→[入力規則] ※ここまでは、リスト入力でしました。\n  この[入力規則]→[設定]で\n    入力値の種類:▼ボタンをクリックし、ユーザー設定を選択\n    数 式: =COUNTIF(A:A,A2)<2 \n  この A2 をA列にコピーする。\n\n ※これは、A2 と同じデータが、2 となり、2 以上になるためエラーとなる。\n   同様に A3 , A4 ・・・・ が 2 以上になるとエラーになる。\n\n|!|!A||\n|!1|氏 名||\n|!2|田 中|A2から入力規則されているため、A4 に田中と入力すると<br>×Microsoft Excel<br>入力した値は正しくありません。 と表示され、入力できません|\n|!3|鈴 木|~|\n|!4|田 中|~|\n\n\n <エラーのときのメッセージ>\n  通常は上記のような「入力した値・・・」というエラーメッセージがでます。\n  このエラーメッセージを「この名前はすでに登録されています」等に変えることができます。\n  入力規則と同じように、[データ]→[入力規則]→[エラーメッセージ]で\n    スタイル:▼で[停止]を選択 \n タイトル:W登録 !!! と入力\n    エラーメッセージ:この名前はすでに登録されています と入力\n\n  こうすると、エラーメッセージが変わります。\n 変える時は A2 に戻って変えてください。\n\n <セルの入力規則>\n  セルの入力規則は、セルの入力のとき有効です。従来入力されたデータには効果がありません。   \n
「C1」のセルの値を判定し音声を発するマクロ\n\nPublic A(2) As Double\n\nシートモジュールに\n\nPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)\nA(1) = Range("C1").Value\nIf A(1) <> A(2) And A(1) > 9 Then\nApplication.Speech.Speak "じゅうイじょうです"\nEnd If\nA(2) = A(1)\nEnd Sub\n\n\nApplication.Speech.Speak "じゅうイじょうです"\n
!リンク\n*http://などで始まる文字列は自動的にリンクされます。\n URLアドレスなどそのままコピー&ペーストするとリンクが出来るので簡単ですね。\n\n*リンクタイトルを変えたい場合は以下の書式で可能です。\n{{{\n   [[リンクタイトル|http://URLアドレス]]\n}}}\n\n*WikiNameは、大文字のアルファベット2文字です。\n\n*日本語などでリンクページを作りたい場合は以下の書式です。\n{{{\n   [[リンクページ名]]\n}}}\n\n*exlsフォルダのエクセルファイルform1を開く\n{{{\n[[サンプルExcel|exls/form1.xls]]\n}}}\n\n画像の貼り付けは\n[img[img/mitico.gif]]\n●●/はフォルダ名\n{{{\n[img[img/mitico.gif]]\n}}}