>>951 「取る」の意味がわからん
取り除く =RIGHT("03",1)
取り出す =LEFT("03",1)
cstr(clng("03"))
>>938 質問や書き込みをする前にもう一回試したり調べたりしてからのが
人生で恥ずかしい思いをする事が少なくなるぞ
いやまじでまじで焦りは禁物
>>938 最後の一行いらなくね?
あとExcelのバージョンは?
957 :
デフォルトの名無しさん :2012/11/24(土) 16:11:49.42
Office 田中 のスキルってお前らどう思いますか? どうも俺らの方が上な気がしてしまうんだが。
958 :
デフォルトの名無しさん :2012/11/24(土) 16:14:37.87
VBAの編集ウィンドウでは、Visual Studio みたに マウスで選択した行を一度にコメント、コメントアウト する様なショートカットボタンは無いですか?
959 :
デフォルトの名無しさん :2012/11/24(土) 16:17:23.33
あと、 #region **** #endregion みたいなのってVBAじゃ無理?
>>958 Office XPはあるよ。
それ以外のバージョンは手元にないんで知らん。
1.VBEのツールバーを右クリック。
2.メニューの中から「ユーザー設定」を選択。
3.「ユーザー設定」ウィンドウの「コマンド」タブを選択。
4.「分類(G):」の中から「編集」を選択。
5.「コマンド(D):」の中の「コメントブロック」か「非コメントブロック」をツールバーにドラッグして移動。
>>957 高いスキルを保有していることと
人に教えることは、何というか別物だと思うんだ
>>957 少なくともアルファベットを全角で書くやつはPC初心者に多いよね
963 :
デフォルトの名無しさん :2012/11/24(土) 17:58:55.71
>>957 彼の知識は上の中くらいはある
でも頭の回転はさほど良くない
初心者相手に知識や初歩テクを伝授することは出来ても
素晴らしいプログラムを生み出したり
中級以上の者のステップアップになるような
記事や本を書くのは無理
人間、生まれた時からVBAの知識を持ってる奴など居ないから
初めは彼の知識を見て「こいつ、詳しいじゃん」と思うだろうが
頭の回転の良い奴は、理解や知識の蓄積も早いから
すぐに彼の領域を超えてしまい、「こいつより俺の方が上じゃん」となる
965 :
デフォルトの名無しさん :2012/11/24(土) 18:56:06.98
>>960 ありがとうございます。Excel2010でも出来ました。
>>961 >>964 あの人のスキル自体は然程高く無いでしょうけど、
人に分かり易く教えるスキルはかなり上位なんじゃないかと思います。
966 :
802 :2012/11/24(土) 19:04:13.33
自分にはVBAはまだ早かったようなのでマクロの記録でやりました。 Excel自体の理解も浅いようなのでもっと勉強したいと思います。 お目汚し済みませんでした。
967 :
デフォルトの名無しさん :2012/11/24(土) 20:19:46.06
こんどはAdvancedFilterで同一行に複数(3つ以上)の項目でフィルターをかけるとき、 フィルターは、「指定の値で始まる」にしたいんです(つまりワイルドカードが最後についたような「てすと*」みたいなもの。)。 これはどうやったらできますか? CriteriaRangeにはセル範囲を入れないといけないらしいし一行目は項目名だから、ワイルドカードが使えないのです。 (この質問を理解できるのはかなりVBAに精通してる人のみだと思いますが)
荒らし認定。みんなスルーな。
969 :
967 :2012/11/24(土) 20:44:49.83
ありゃ、できたわ。 でもそれは作業用のセルをわざわざつくって、「てすと*」みたいに代入したから。 こうせず、コードだけでCriteriaRangeを実現することはできますか? (理解できるのは限られた人のみと思いますが)
自分にはまだ早いと言ってるやつが将来にわたって出来たためしがない 今この機会を逃すのはどうして?
VBの開発理念は、10分で作れそうかどうか?というものになります。 それ以上はそれなりのしっかりした開発環境で開発しましょう、という事です。 更にそのサブセットでしかないVBAでコレ以上悩むなら、それは無駄だということです。 これ以上無駄に時間を消費する事を止め、解る人に開発を依頼してください。 ご安心下さい、あなたがダメと言う訳ではありません。 あなたは向いてない、というだけの事です。
それマイクロソフトのおっさんの発言だろ? 実際にはサポート切りたいのに使われすぎて切れないって時点で そいつの想定外の使われ方されてるのは分かりきってるし そんな理念はとうに崩れてるよ 実際に仕事でVBで○人月の開発とかザラにあるんだが・・・
VBならともかく VBAでそれやるのは 間違ってる気がする
実はそうでもない VBAはExcelというプログラム分からない人でも長年使っていたインターフェイスを持っており そのインターフェイスをそのままに、長年使ってきたシートフォーマットをそのままに 機能追加や自動化が出来るというメリットがある PC慣れしてる奴は、Excelのシート操作がVBやCなどで作ったフォーム入力になっても何の弊害も感じないし むしろそっちの方がやりやすく感じるものだが、PCに疎い奴は、ユーザーフォームで入力を簡素化してやっても 「作業が簡素化されている」ということより「以前と操作や入力方法が違う」ということに弊害を感じてしまうものだ 組織の中で働く以上、いまだそういう人の方が多いくらいだと言うことを忘れてしまうと 一部のPCベテランのみには認められるが、大多数のPC初心者にはウザがられる独りよがり野郎になってしまう
975 :
デフォルトの名無しさん :2012/11/25(日) 10:39:12.38
たとえば activecell.AutoFilterまで入力すると自動入力候補が現れますが cells(1,1).autofilterを入力してもなにも現れないのは どうしてですか?
Cells(1,1)の戻り値がObject型だから。
このレベルの質問してくる奴にその説明で伝わるかな?
978 :
975 :2012/11/25(日) 10:54:39.06
どういうことでしょうか?
979 :
デフォルトの名無しさん :2012/11/25(日) 10:55:18.24
じゃあActivecellの戻り値は何型?
そういうもの。まあVBAだし。
>むしろそっちの方がやりやすく感じるものだが、PCに疎い奴は、ユーザーフォームで入力を簡素化してやっても >「作業が簡素化されている」ということより「以前と操作や入力方法が違う」ということに弊害を感じてしまうものだ Windows 8 ですね。わかります。
>>975 Cells(1,1)ってCells.Item(1.1)の省略形なんだよ。厳密にはCells.[_Default](1,1)だが
これらItemプロパティや[_Default]プロパティはRange以外でもいろんなものに使われている
たとえばWorksheets("Sheet1")はWorksheets.Item("Sheet1")の省略形。これも厳密には上と同じ[_Default]だ
だからItemプロパティでは入力候補を出しようがないんだな
Range("A1")やCells.Resize(1,1)などきちんとRange型を返すプロパティなら入力候補が出る
あるいはCells(1,1)をRange型の変数に入れてからピリオド打てば入力候補が出る
コーディングするときは入力候補が出るようなコーディング方法がおおむねセンスの良いコーディング方法だ
たとえばWith Worksheets("Sheet1")としてピリオド打っても入力候補は出ないが、Worksheet型の変数に
Set ws = Worksheets("Sheet1")
With ws
とすればピリオド打った時入力候補が出る
間違いだらけのドヤ顔解説w
正しい解説は
>>983 にお任せしてようするにItemプロパティって実行してみないと型がわからない実行時バインドってことね
> With Worksheets("Sheet1") Worksheetsの引数に変数使うならまだしも リテラル値でベタ書きするなら With Sheet1 ってすれば良いだけ シート名(ブックのシートタブに表示される名前)は VBA使わない人でも変更できるから、この名前を使って シートを特定する方法は他者が使う場合は特に バグの原因になることも多い シートのオブジェクト名(CodeName)は、VBAわかる人以外 まず弄ることは無いからバグを引きおこしにくい
よく見たらピリオド打った時の話じゃなかったな
>>982 は的外れだった
>>986 オブジェクト名使うのには俺も賛成だ
固有の型を返すからね
>>986 他のWorkSheetを見てしまう可能性があるからそれはだめだろ
何勘違いしてるんだ?
>>986 マクロブックからデータブックを扱うときのデータブックのコードネームの使い方を教えて欲しい
人に物を聞くときは最後に次の一文をつけることがこのスレの礼儀 (この質問を理解できるのはかなりVBAに精通してる人のみだと思いますが)
あ
994 :
デフォルトの名無しさん :2012/11/25(日) 18:51:24.94
>>985 バインドってなんですか?
怪我したときに貼るやつ?
995 :
デフォルトの名無しさん :2012/11/25(日) 19:09:32.46
>>990 他のワークブックがアクティブなときにマクロ実行するとそっちのブックのSheet1をwithるだろ
>>996 意味不明
そっちのブックってコードが書いてあるブックのことか? それなら理解できるが
ようするにワークブックとワークシートを明示しないとどのブック・シートになるかわからない、ってことじゃないの? 実は俺もよく解ってないんだけど、俺はいつもこうしてる。 Set myBook = Workbooks("hoge") Set mySheet = myBook.Worksheets("fuga") With mySheet 〜 End With
999 :
デフォルトの名無しさん :2012/11/25(日) 20:15:05.52
そう Sheet1等のシートオブジェクトを指定した場合 対象となるワークブックは暗黙的にActiveSheetになる だからAというブックへマクロを適応しようとしても 他のBというブックがActiveSheetになっていると Aに対して行いたいことがBに対して行われてしまう
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。