1 :
デフォルトの名無しさん :
2013/08/13(火) 14:22:56.95 ExcelのVBAに関する質問スレです
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part30
http://toro.2ch.net/test/read.cgi/tech/1370088822/ 関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
Debug.Print "乙"
Excel2002からExcel2010にバージョンアップしたら下記のところでエラーが出て止まるようになった。 毎回必ずエラーになるわけではなく、たまに上手くいく時もあったりして再現性はあやふやだけど。 Worksheets(SheetA).Rows(RowA).Copy Destination:=Worksheets(SheetB).Rows(RowB) しょうがないから下記に書き直したらエラーは全く出なくなった。 Worksheets(SheetA).Rows(RowA).Copy Worksheets(SheetB).Rows(RowB).PasteSpecial なぜ?
>>4 どんなエラーメッセージが出てるのか分からないと何も答えられないんじゃないかな?
個人的にExcel2010の環境がないから回答できないけど。
>>5 「オブジェクトは、このプロパティまたはメソッドをサポートしていません」
と出て処理が止まってしまう。でも、実際にSheetBを見るとちゃんと指示通りにCopyが出来ている。
>>4 フォーマットが違ってるブックやシート混在してて、
2002と2010の最大行列の違いでエラーはいてるとか・適当だけど。
9 :
デフォルトの名無しさん :2013/08/15(木) 17:47:48.23
age
10 :
sage :2013/08/15(木) 18:47:32.82
ググってもダメ、自力ではエラーだらけで困りました。 数人のメンバーが週間行事予定を「予定表.xls」に記入し、 マクロ実行で同じフォルダ内にある「週間予定表.xls」に転記、 上書きされ共有予定表を作成したいです。 予定表原紙にしか記入はしません。 A 日時 B 内容 C 参加者 D 備考 といった感じに記入します。 記入行数はA4〜G10まで、ただし数値は週によりバラバラです。 コピーマクロを使用すると、罫線までコピーされてしまいました。 どのようなマクロを組んだら良いかご教示頂けませんでしょうか?
マクロの記録で値のみ貼り付けを調べてみたら?
12 :
sage :2013/08/15(木) 20:01:25.21
>11 ありがとうございます。だいたいやりたいことはできました。 ただ、最終行に追記できないのでここの分を少々悩んでみます。
同じフォルダならマクロより共有と参照で良さそうだけどダメなのか。謎や。
14 :
sage :2013/08/15(木) 20:30:57.80
>13 個人用と共有用ではファイルを分けなければならない事情があるので 共有と参照では困るんです。
16 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/15(木) 23:55:39.52
「編集」→「形式を指定して貼り付け」 罫線なしで貼り付けできます
Access2010からデータを取得して編集するのにExcel(2010)VBAを使ってるんだけど、 Access2013にしたら動かなくなったと報告が。。。 今その環境が無くて確認も何もできなくて色々ぐぐってみたんだけど、 Access2013環境に対しては、 『Microsoft.ACE.OLEDB.12.0』が使えなくなったの?
>>18 そりゃさすがにMSに聞かないと分からん事象じゃないの・・・
逆に、なんで2chで聞こうと思ったの?
>>19 レスありがと。
実際は別の理由バグが起きてるのかもしれないけど、
ここ(d.hatena.ne.jp/dojum/20130530)に
それっぽいことが書かれてて。
裏付けしようとMSDNも見てみたんだけど、
それっぽいのが見つからなかったんだ。
で、同じ事象にあった人がいないかなぁと思って、
聞いてみた。
ググっても分からず質問させていただきます 例えばA1に『おはよう』と入ってたとして、A6に『おやすみ』が入ってます。 その間最初の文字が半角スペースなのか判断する方法ありますか? おはようとおやすみにはスペースは入りません。 おはようとおやすみは必ず決まった文章ですが、中の文字列は毎回変更します。 行数も変わります。 よろしければご教授お願いします。
>>21 すいません追記です
『おはよう』と『おやすみ』は決まった文章と書きましたが、『おはよう!』の時もあれば『今日もおはよう』の時もあります。
必ずおはようという単語が入ってますが、前後の文章が変わることもあるので決まった文章とはいえませんでした。
大変申し訳ありません。
解読班!
>>21 VBA 文字 半角 全角
で検索すれば答えが出て来るだろ(適当
>>21 > 例えばA1に『おはよう』と入ってたとして、A6に『おやすみ』が入ってます。
> その間最初の文字が半角スペースなのか判断する方法ありますか?
『おはよう』、『おやすみ』の文字列を検索するならInStr関数で対応できる。
最初の文字が半角スペースなのか判断するのもInStr関数で対応できる。
>>21 いまいち文意がよくわからんけど、適当に解釈して糞コード書いたぞ
Sub 判定()
Dim r As Long, r1 As Long, r2 As Long
r1 = 0
r2 = 0
For r = 1 To 65536
If InStr(Cells(r, 1), "おはよう") <> 0 Then r1 = r
If InStr(Cells(r, 1), "おやすみ") <> 0 Then r2 = r
Next r
If r1 = 0 Or r2 = 0 Then
MsgBox "ちゃんと挨拶しろ"
Exit Sub
End If
For r = r1 + 1 To r2 - 1
If Cells(r, 1) <> "" Then
If Left(Cells(r, 1), 1) = " " Then
MsgBox "半角スペースだっつの"
Else
MsgBox "半角スペースじゃねっつの"
End If
Exit Sub
End If
Next r
End Sub
>>26 仕様も分からないのにコード書くとはアホかと。
>>21 の仕様とかいちいち真面目に考えてたら日が暮れるわい
>>26 自ら糞コードというコードを書き込むなよ。
胸糞悪い。
>>28 別にコード書けって言われてるわけじゃないんだから無理する必要はないだろ。
糞コード>>>>>>>>>>>>>>>>>糞レスの羅列
>>27 コードを書くことで「俺はこう解釈した」ということが明確になるんだから、お前より100倍まし。
>>27 これぐらいの仕様なら、日本語でやるよりコードで議論した方が確実。
だがしかし質問者がコードを読めないという罠
>>31 >>32 スレのルールを守れないような奴が糞コード書いて議論なんて呆れたものなんだが。
35 :
みんな憧れの桃さん :2013/08/21(水) 18:04:32.57
>>34 議論に入れないからって、拗ねるなよ (w
お、おう 議論頑張ってなw
39 :
21 :2013/08/21(水) 21:46:17.85
自分のせいで荒れてしまって申し訳ない 分かりやすいようにおはようとおやすみにしたけど余計混乱させてしまったようだ interfaceFastEthernet1 _ip address 10.0.0.1 255.255.255.255 _no shutdown ! (アンダーバーはスペース) こうなってるかをチェックするツールを作りたかったんです。 FastEthernetの部分はGigaEthernetになることもあるし、Configデータを外部からテキストファイルで読み込んでいるためデータによってはA1、A6ではないことも有り得ます。 実際はB5〜B500までにデータを読み込ませています。 もし最初の文字が半角スペースじゃない時は同じ行のE列に×を表示させたかったんです。 本当に日本語が不自由で申し訳ありません。
本当に日本語が不自由でワロタ
>>39 社会人なら上司にその日本語を添削してもらえ
学生なら教師にその日本語を添削してもらえ
で、その結果を書き込んでくれ
頼む
別にそういう問題であっても
>>26 の応用で何とかできそうな気がするけど?
これ以上どこが疑問なのか?
43 :
桃白白 ◆9Jro6YFwm650 :2013/08/21(水) 22:12:05.02
>>41 ふつうの日本語だね。桃白白的にはお前の読解力のほうがやばくない?
ご教示だろ で、どこまで分かってて何で困ってるんだ? 分かっただろうが丸投げは荒れるんで勘弁な
45 :
桃白白 ◆9Jro6YFwm650 :2013/08/21(水) 22:22:47.50
>>44 教授でも教示でもどっちでもいいよ。教えてほしいってことだろ。
お手紙に草々と書かれていたら俺の頭頂部は決して雑草じゃないが!!と怒り狂うタイプ?
お手紙は心で読むものなんだよ。どういうお気持ちでこのお手紙をお書きになったんだろうかと
思いを馳せながら読むものなんだよ。そうすればクロヤギさんの悲劇も起きなかったんだよ。
知ってる?クロヤギさんお手紙読まずに食べちゃったんだって。おいしいのかな?
46 :
21 :2013/08/21(水) 22:37:50.87
申し訳ありません。本当に日本語から勉強したほうが良いかもしれません。
やりたい事は簡単に言うとテキストファイルで書いたconfigデータの階層チェックです。
・現在出来ていること
テキストで書いたをConfigをExcel読み込ませてB5〜B500に表示させる事。
・したい事
読み込ませたB5〜B500にある文字列の内、どこかの行にある"interface"という単語がある行から、その後にある"!"!までの間にある文字列の最初の文字が半角のスペースであるかの判断をしたい。
しかし、interfaceがある行と!のある行最初の文字がスペースではなくてよい。。
interfaceと書いてある行は複数あり、!が書いてある行も複数ある。
その複数のinterface〜!間の階層をチェックしたい。
>>26 さんの書いてくれたコードを応用して明日学校で試してみます。
本当に申し訳ありません。答えてくれた皆様ありがとうございました。
今度質問するときは日本語を勉強して来ます・・・。
>>45 誤用厨と一緒にすんな
「伝わればいいよ」
みんなそれで済ませちゃったら彼は"教授"を使い続ける事になる
小さな恥を積み重ねていくならここで指摘された方がマシだろ
チェックだけ、なおかつ数もそんなに多くないということで、createobjectでregexp用意して、"^ .*(interface|\!)"でtestしてtrueかどうか判断すれば良いね。 ※正規表現の記述は適当。勉強してね。
眉間にシワを寄せざるを得ない程に説明が下手だな。 判断に必要なのは一行なのか複数行になるのかすら分かりかねる。もはや才能だ。
50 :
桃白白 ◆9Jro6YFwm650 :2013/08/21(水) 23:04:43.21
>>47 別に間違いじゃないよ。間違いじゃないから恥じゃないよ。
恥じゃないから指摘する意味ないよ。恥を積み重ねているのはあなたなんですよ。
>>46 ConfigはExcelの機能ではなくVBAのOpenステートメントとかでロードしたの?
だったらロード時に一緒にやっちゃった方が効率良いね
52 :
桃白白 ◆9Jro6YFwm650 :2013/08/21(水) 23:05:56.34
>>49 そう?わかりやすいと思うけど。どうして日本語苦手みたいだね?
データのサンプルを用いて 「この行はxxがスペースだから○」 「この行はxxがスペースだけど、次に出現する!が云々だから×」 とか書いた方が早い。 ※サンプルデータは実際のデータではなく適当な文字に置き換えた意味のないデータにするんだよ。
半角スペースである必要のある行はひとつ右にずらしてロードすればよくね
55 :
桃白白 ◆9Jro6YFwm650 :2013/08/21(水) 23:13:27.98
教授が間違いだと言ってる人って目上の人にご苦労様ですと言ってはいけないと思ってそう。 ご飯食べるときにご飯にお箸を突き立てて手を合わせてお参りしてそう。
>>54 訂正
半角スペースである必要のある行は列を一つ右(C列)にずらしてロードすればよくね
57 :
桃白白 ◆9Jro6YFwm650 :2013/08/21(水) 23:15:46.16
>>56 それは無茶だろう。パンを食べずにケーキ食べればよくねとアンネフランクが言うようなもの。
ギロチンものですわ。
アンネフランクはどうして出てきた?
>>55 そもそもお前に言ったんじゃないしスレチだし間違いじゃない根拠挙げないし
挙句、人格攻撃とは何も変わってねぇな
60 :
21 :2013/08/21(水) 23:40:46.16
日本語を勉強してから来ると言いましたが来てしまいました。また誤字があったりしたら申し訳ありません。
>>48 ありがとうございます。
明日学校で試してみます!
>>49 本当に自分が嫌になるくらい説明下手ですいません。
複数行になります。interface〜!以外では最初の文字がスペースということは有り得ません。
interface FastEthernet1
ip address 〜 ×
_ no shutdown
!
interface GigaEthernet1
_ip address 〜
_〜〜〜
〜〜〜 ×
_ no shutdown
!
このような物が複数並んでいてその全てを判断したいです。
>>51 そうです。
openステートメントで読込させてます。
一緒にできるんでしょうか?
>>53 なるほど!段階を踏んで考えて行けば出来るかもしれません!
ありがとうございます。
>>54 それも考えたのですが、Excel上で手直しをしてそのまま出力をさせたいのでセルをずらすと出力時困るかなっと思ってこの状態になってます。
61 :
桃白白 :2013/08/21(水) 23:47:15.99
>>59 根拠ってなんの根拠だ?あ?
何被害者ぶってんだバーカ。
スレ違いだと思うんならどうでもいい揚げ足取りすんなよw
とりあえず1回分 Sub a() b = 5 ' 5行目から探す ' まずinterfaceを探す Do While InStr(Cells(b, "B"), "interface") = 0 And b < 500 b = b + 1 Loop If b >= 500 Then MsgBox ("interfaceが見つからない") Exit Sub End If ' 次に ! を探す c = b + 1 ' interfaceの次の行から Do While Cells(c, "B") <> "!" And c < 500 c = c + 1 Loop If c >= 500 Then MsgBox ("!が見つからない") Exit Sub End If ' 両者の間でスペースを調べる For i = b + 1 To c - 1 If Left(Cells(i, "B"), 1) <> " " Then MsgBox (i & "行目にスペースがない") Exit Sub End If Next MsgBox ("チェックOK") End Sub
63 :
桃白白 :2013/08/21(水) 23:48:58.60
結局さー教授が間違いだといいたいだけのやつが 誤用厨じゃないと大嘘ついたのが間違いだよね。完全に誤用厨じゃねえかw
64 :
桃白白 :2013/08/21(水) 23:53:32.70
教授と教示は全く寸分違わず同じ意味です。今後教授が間違いだと指摘してくるような知恵遅れには精神病院を紹介して差し上げましょう。
トリップつけろよ
66 :
桃白白 :2013/08/22(木) 00:07:38.36
>>65 トリップつけてない奴にトリップつけろと言われてもトリップ付ける気になりませんなー。出直してこいよw
>>62 なぜ一回ぶんww
あとは自力でやらないと身にならないよキリッってこと?
イケメン過ぎ抱いて/////
69 :
デフォルトの名無しさん :2013/08/22(木) 00:28:08.62
>>68 どうせ一回分しか作れないのに初心者に偉ぶりたいんだろ
黙っててやれよ
70 :
桃白白 :2013/08/22(木) 00:38:21.04
>>67 読めねえよ。常用漢字外はカタカナで書くのが常識だろ。
ひらがなで書け。
なあ桃白白、ピラフどこ行ったか知んね?
72 :
桃白白 :2013/08/22(木) 01:04:06.59
ピラフもういなくなったのか
>>39 がやりたいだけだったら、自分だったらわざわざプログラミングせずに
E5セルに↓を入れて、あとはE500までざっとオートフィルして、さっさと仕事を終わらして帰っちゃうけどなぁ
=IF(OR(ISNUMBER(FIND("interface",$B5)),ISNUMBER(FIND("!",$B5)))=FALSE,IF(LEFT($B5,1)<>" ","×",""),"")
>>74 interfaceより前と、 ! より後の行でもヒットするから失格
ええ〜?課長
>>60 でそんなこと言ってなかったじゃ〜ん
説明下手なんだよクソ上司〜ぃ
77 :
デフォルトの名無しさん :2013/08/22(木) 07:04:12.80
>interface FastEthernet1 >ip address 〜 × >_ no shutdown >! >interface GigaEthernet1 >_ip address 〜 >_〜〜〜 >〜〜〜 × >_ no shutdown >! >このような物が複数並んでいてその全てを判断したいです。 文字通りに読むなら interfaceより前と、 ! より後は、既にCUT済みのサンプルって事じゃねーの?
自分に都合のいいように仕様を決め打ちするのはよくない。
だから、書かれている以上の事を勝手に決め打ちしてるのは
>>75 じゃねーの?
まぁ、たぶん現実的には
>>75 が正解なんだろうけど、
サンプルにinterface〜!以外の行が余計に引っ付いてるとは一言も書かれてないし、
"interface〜!以外では最初の文字がスペースということは有り得ません"と決め打ちして
その部分については全く無視してるしさ。
>>60 糞コードパート2書いたぞ
Sub 判定()
'B5〜B500にConfigデータ、E5〜E500に判定結果
Dim i As Long, j As Long, r As Long
Dim r1 As Long, r2 As Long
r1 = 0
r2 = 0
Range("E5:E500").Clear
For i = 5 To 500
If InStr(Cells(i, 2), "interface") <> 0 Then
r1 = i
For j = r1 + 1 To 500
If InStr(Cells(j, 2), "!") <> 0 Then
r2 = j
Exit For
End If
Next j
If r1 >= r2 Then
MsgBox r1 & "行目くらいからなんか変"
Exit Sub
End If
For r = r1 + 1 To r2 - 1
If Left(Cells(r, 2), 1) <> " " Then Cells(r, 5) = "×"
Next r
End If
Next i
End Sub
>>81 -10000000点。
削除依頼のレベルだなw
exit forとか最悪だな 回数不定のループでdo loop whileとか使わないのは素人 Sub c() Dim r As Long Dim f As Boolean Dim s As String r = 5 ' 5行目からスタート f = False ' 判定対称かどうかのフラグ Do s = Cells(r, "B") If f Then If s = "!" Then ' 判定終わり f = False ElseIf Left(s, 1) <> " " Then Cells(r, "E") = "×" ' 先頭がスペースじゃなかった End If Else If InStr(s, "interface") > 0 Then f = True ' 次から判定スタート End If End If r = r + 1 Loop While r <= 500 End Sub
do loop whileとか使う方が知ろうとだわ
Exit ForってのはNextの次にGoToで飛ぶのと同じだからな プログラムの論理構造がきちんと設計できてない証拠だぜ
for next の方が do loop より高速なんじゃなかったっけ?
たまたま最後の ! が抜け落ちてた時はどうするの? とにかく500行目まで処理するのか、完結してないブロックは対象外とするのか
>>87 今の時代は速度より可読性を重視する流れだと思う
そらまあ1回ごとに判定の入るdo〜loopは遅いわな 中間コード見るとわかるけど、for〜nextはループの最初にCXレジスタに回数を入れるだけだから速くて当たり前
do loop whileは、loop行まで読み進めないとどれだけループするのか不明という、 可読性的に致命的な欠点がある。
Exit Forがあちこちに散らばってるより ループから抜ける条件が最後に、一箇所にまとまってる方が可読性が高くないか?
Do While|Until〜Loopなら条件が最初に来るよね
>>92 上のコードはあちこちには散らばってないが、そんなに複雑ならメソッドとして抽出するなどしたほうが良いのでは。
95 :
21 :2013/08/22(木) 20:01:16.85
皆様ありがとうございました。
お陰様で作りたいものを作ることが出来ました。
>>62 さんのが一番分かりやすかったので参考にさせて頂きました。
>>74 interfaceと!間以外に別の設定データがあるためそれは出来ませんでした。
説明不足申し訳ありません。
>>81 何故か学校のエクセルでは動きませんでした。
>>81 ありがとうございました!こちらも参考にさせていただきました。
VBA初めてでネットワーク系のconfigのチェックツールを作ろうとしてましたが、本当に自分の理解力の乏しさでは難しいことを知りました。
これからも勉強して行こうと思います。
For i = start to end hoge(i) Next ↑前者と↓後者 どっちが可読性高いんす i = start Do hoge(i) i = i + 1 Loop While i <= end
98 :
デフォルトの名無しさん :2013/08/22(木) 21:51:12.64
>>97 上の方がわかりやすい。
start > endのとき動作違うよ。
どう?ウイイレ。 うんちるロープ。
どぅ、わいる、あんてぃる、るーぷ ところで宿題なのか。協力する気にならんな。かわいそうに。
101 :
デフォルトの名無しさん :2013/08/22(木) 22:59:21.46
宿題じゃないだろ 宿題ならこんなとこで聞かないで学校で聞くんでね?
102 :
デフォルトの名無しさん :2013/08/22(木) 23:04:53.80
日本語不自由だけど最低限礼が言えるからそんなに悪い奴ではなさそう
初心者で初めてで
>>62 を見本にループ出来るの様にしたなら頑張ってると思うよ
俺も学生のときこんなんだったかなってノスタルジックな気持ちになったわww
>>97 単にカウンターでループするだけならForに決まっとる
Do Loopは繰り返す条件や抜ける条件がもっと複雑な時に使う
使い分けろ
あと、Forと同じ動作させるなら
i = start
Do While i <= end
hoge(i)
i = i + 1
Loop
VBA以前の話だな。
そうか?
シートAに以下のようなものがあるとします A B 1/1 10 1/2 20 1/3 30 1/4 40 1/5 50 このとき別のシートBに日付を2つ入力し、その2点間の平均を求める関数を書きたいです (例えばシートBのA1に1/2、A2に1/4と記入したらA5には20,30,40の平均=40が出力される) それについて以下のように考えました =AVERAGE(INDIRECT(ADDRESS(MATCH(シートB!A1,シートA!A:A,0),2,4,1,"シートA")):INDIRECT(ADDRESS(MATCH(シートB!A2,シートA!A:A,0),2,4,1,"シートA"))) または =AVERAGE(INDIRECT("シートA!A"&MATCH(シートB!A1,シートA!A:A,0)):INDIRECT("シートA!A"&MATCH(シートB!A2,シートA!A:A,0))) このとき、AVERAGEの真ん中にあるコロン( : )が コンマ( , )の場合動きましたがコロンの場合どうしても動きませんでした 上記の方法では2点間の範囲という選び方はできないのでしょうか? また、このほかにもっと良い方法ありましたら教えていただければ幸いです
すみません関数なのにこちらで質問してしまいました excel質問スレで再度聞き直してきます
とりあえずVBAスレなんで糞コード書いた Sub 集計() Dim R1 As Range, R2 As Range Dim D1 As Date, D2 As Date With Sheets("シートB") D1 = DateValue(.Range("A1")) D2 = DateValue(.Range("A2")) End With With Sheets("シートA") Set R1 = .Range("A:A").Find(What:=D1, LookIn:=xlFormulas) Set R2 = .Range("A:A").Find(What:=D2, LookIn:=xlFormulas) If R1 Is Nothing Or R2 Is Nothing Then MsgBox "その日のデータないからムリ" Else Sheets("シートB").Range("A5") = Application.WorksheetFunction.Average(.Range("B" & R1.Row, "B" & R2.Row)) End If End With End Sub
>>108 に追伸
Find検索のプログラムを走らせたらExcelの検索置換のオプション設定が変わるから、一応注意喚起しとく
110 :
デフォルトの名無しさん :2013/08/25(日) 22:08:52.13
本屋で昔立ち読みした 「ンっもう!最初からそう教えてくれよ。」みたいなタイトルのVBA本は何だったのでしょうか?
スレ違いの糞コードで
Sub 検索()
Dim IE As Object, T As Object, B As Object
On Error GoTo Error:
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "
http://www.amazon.co.jp "
Do While IE.Busy Or IE.ReadyState < 4: DoEvents: Loop
Set T = IE.Document.getElementByID("twotabsearchtextbox")
T.Value = "最初からそう教えて"
For Each B In IE.Document.getElementsByTagName("INPUT")
If B.Value = "検索" Then
B.Click
Exit For
End If
Next
Set IE = Nothing: Set T = Nothing: Set B = Nothing
Exit Sub
Error:
If Not IE Is Nothing Then IE.Quit
Set IE = Nothing: Set T = Nothing: Set B = Nothing
MsgBox "便利な箱がネットにつながっていないかも。" & vbCrLf & "あと、もしかしたらIEかAmazonがサボってるかも。"
End Sub
113 :
デフォルトの名無しさん :2013/08/27(火) 01:21:14.82
エクセルのピボットテーブル、結果の集計表はもらったのですが、元データをもらっていません。 ピボットの切り口を変えたいため、いまある集計表から元データ(縦持ち)に戻すVBAを書きたいと思っています。 ピボットは1000行、200列ほどあるため、一列にすると約20万行となります。 知恵袋を参考に、下記を適用したのですが、「オーバーフロー」のエラーがでます。 どうすればよいのでしょうか。なお、Win7,Excel2010です。
114 :
デフォルトの名無しさん :2013/08/27(火) 01:24:08.74
Sub Sample() Dim SyukeiData As Range Dim i As Integer Dim j As Integer Dim k As Integer Set SyukeiData = Sheets("Sheet1").Range("A1").CurrentRegion k = 1 For i = 2 To SyukeiData.Rows.Count For j = 2 To SyukeiData.Columns.Count Sheets("Sheet2").Cells(k, 1) = SyukeiData.Cells(i, 1) Sheets("Sheet2").Cells(k, 2) = SyukeiData.Cells(1, j) Sheets("Sheet2").Cells(k, 3) = SyukeiData.Cells(i, j) k = k + 1 Next Next Set SyukeiData = Nothing End Sub
>>114 とりあえずIntegerをLongにすればオーバーフローする確率は下がる
まあ、言いたい事は色々あるが、とりあえず頑張ってくれ
>>113 オーバーフローの意味ググってみたのかな?
Sub 糞コードで一言() MsgBox "ついでにDoEventsとかも入れてみたらどうかな", vbQuestion End Sub
すみません。そのコードをどこに追加したらよいですか。
119 :
デフォルトの名無しさん :2013/08/27(火) 14:52:15.60
Sub 118のレス() Dim Person as Object Person = "118" If Person.Head = "Aho" Then MsgBox "あなたはアホですね" Elseif Person.Head "Baka" Then MsgBox "あなたはバカですね" Else MsgBox "あなたはウンコです" End If End Sub
DoEventsの濫用はキケン
質問させてください。XP pro 、2007です Worksheets(1).Copy after=Worksheets(1) ActiveSheet. Name = hensu1 & hensu2 まず、コピーしたシートの貼り付け先として、新しいブックを作りたいです(A.xisとする) 作ったブック(ファイル)の名前に変数を使いたいです。本を見ながらやったんですが、変数が効いたり効かなかったりします… さらに、同じマクロを再度実行した時は、コピーしたシートを先に作ったA.xlsの末尾に追加していくようにしたいです。 if thenで、「A.xlsというブックが開かれている時には」みたいな条件の付け方ができるのでしょうか? ご教授お願いします。
> 「A.xlsというブックが開かれている時には」みたいな条件の付け方 それが本当にやりたいことじゃないだろ。 真にやりたいことを書け。
123 :
121 :2013/08/28(水) 18:31:33.86
>>122 最後は自分の想像を書いただけなので、蛇足でした。すみません。
やりたいことは、その上に書いてあるとおりなのですが、何か説明が不足でしょうか?
>変数が効いたり効かなかったりします… 意味不明 当たり前だけど、モジュールの先頭で Option Explicit はちゃんと宣言してんだろうな?
>>121 > if thenで、「A.xlsというブックが開かれている時には」みたいな条件の付け方ができるのでしょうか?
「excel vba ファイルを開いているか」でググってみれば?
>>121 Application.Workbooks プロパティ
開かれているすべてのブックを表す Workbooks コレクションを返します
set コピー元 = workbook とか worksheetで変数に入れたら分かりやすくなる場合がある それよりまずは仕様の検討から入りましょうか 要件はコピー元のXxls、コピー先のAxlsですが、それぞれの寿命はいかほどですかね。 マクロをXxlsとAxlsのどちらに乗せるのか、あるいはマクロ用にMxlsを用意すべきなのかを検討したく。 変数についてはexprishitですね。breakポイント打ってオブジェクトwindowでDebugしてもいいですよ。
128 :
121 :2013/08/28(水) 22:35:06.51
アドバイス感謝します。
>>127 ありがとうございます。専門用語が半分もわかりませんでしたが仕様に関して
コピー元X.xisはずっと原本として使い続けるであろうもの、コピー先A.xlsは一ヶ月ごとに作成します
ですのでX.xlsにマクロを載せておけばことが足りると思います。
性別 年齢 血液型 男 20 A 女 40 A 女 60 O 男 40 O 女 20 B 行フィールドが二つ(第1行フィールド、第2行フィールド)あるピボットテーブルで For Eachで全フィールドの全アイテムのデータの個数を集計したいです。 第1フィールドの最後のアイテムかつ、第2フィールドのアイテムのデータの個数が全て空白なら その第2フィールドの一つ目のアイテムでGetPivotDataはエラーになります。 これがError→ GetPivotData(データフィールド名, 第1フィールド名, 第1アイテム名, 第2フィールド名, 第2アイテム名) 第1フィールドの集計をなしにする(Subtotalsプロパティ全部False)か、もしくは 第1フィールドと第2フィールドを行フィールドと列フィールドに分ければ上記のエラー出ませんが、 何でエラーになるのでしょうか。
ピラフに教えてもらおう
え?ピラフはもう…いないよ
Private Sub test() Dim sh1 As Worksheet, sh2 As Worksheet, source_data As String, k As Long, data As Variant Dim pvt_sh As Worksheet, pvt_tbl As PivotTable Dim pvt_fld_性 As PivotField, pvt_fld_年 As PivotField, pvt_fld_血 As PivotField Dim pvt_itm_性 As PivotItem, pvt_itm_年 As PivotItem, pvt_itm_血 As PivotItem Set sh1 = ThisWorkbook.Worksheets("Sheet1") source_data = sh1.name & "!R1C1:R" & sh1.Range("A1").End(xlDown).Row & "C" & sh1.Range("A1").End(xlToRight).Column Set pvt_sh = ThisWorkbook.Worksheets.Add ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=source_data).CreatePivotTable TableDestination:=pvt_sh.Cells(3, 1) Set pvt_tbl = pvt_sh.PivotTables(1) Set pvt_fld_性 = pvt_tbl.PivotFields("性別") Set pvt_fld_年 = pvt_tbl.PivotFields("年齢") Set pvt_fld_血 = pvt_tbl.PivotFields("血液型") pvt_tbl.AddDataField pvt_fld_年, "データの個数 / " & pvt_fld_年.name, xlCount pvt_fld_血.Orientation = xlPageField pvt_fld_性.Orientation = xlRowField pvt_fld_性.ShowAllItems = True pvt_fld_年.Orientation = xlRowField pvt_fld_年.ShowAllItems = True ' pvt_fld_性.Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
Set sh2 = ThisWorkbook.Worksheets("Sheet2") sh2.Cells.Clear sh2.Cells(1, 1) = pvt_fld_血.name sh2.Cells(1, 2) = pvt_fld_性.name sh2.Cells(1, 3) = pvt_fld_年.name sh2.Cells(1, 4) = "個数" k = 2 For Each pvt_itm_血 In pvt_fld_血.PivotItems pvt_fld_血.CurrentPage = pvt_itm_血.name For Each pvt_itm_性 In pvt_fld_性.PivotItems For Each pvt_itm_年 In pvt_fld_年.PivotItems sh2.Cells(k, 1) = pvt_itm_血.name sh2.Cells(k, 2) = pvt_itm_性.name sh2.Cells(k, 3) = pvt_itm_年.name data = Empty ' On Error Resume Next data = pvt_tbl.GetPivotData(pvt_fld_年.name, pvt_fld_性.name, pvt_itm_性.name, pvt_fld_年.name, pvt_itm_年.name) ' On Error GoTo 0 If (Empty = data) Then sh2.Cells(k, 4) = 0 Else: sh2.Cells(k, 4) = data: End If sh2.Cells(k, 5) = pvt_tbl.GetPivotData(pvt_fld_年.name, pvt_fld_性.name, pvt_itm_性.name) k = k + 1 Next Next Next End Sub
134 :
デフォルトの名無しさん :2013/08/29(木) 03:09:20.33
135 :
129 :2013/08/29(木) 03:09:31.43
再現コードです。よろしくお願いします。
白ももが原因でコード無償作成スレになりますた
137 :
桃白白 ◆9Jro6YFwm650 :2013/08/29(木) 05:16:17.09
>>136 白ももってまさか桃白白のことじゃないかしら。
桃白白こころあたりがないわけではないような気がしないでもなくはないし、ありえなくはなくなくないと思ってるの。
138 :
ピラフ :2013/08/29(木) 05:18:05.69
>>130 えーわかんなーい。ピラフわかんなーい。じゃあさ、みんなで考えてみようよ。
>>131 いるよ。ピラフここにいるよ。いつでも呼んで、その声はピラフのちくわ耳にきっと届くはずだよ。
桃白白とピラフって同一人物だったのか
パイパンのトリップキー漏れたね。
>>121 Sub xisってなんなんだろう糞にはわからない()
Dim wbc As Integer, wsc As Integer, i As Integer, s As Worksheet
Dim APath As String, AFname As String, ASname As String
APath = "C:\Aのほぞんばしょ\"
AFname = "A.xls"
ASname = "あたらしいシートのなまえ"
For wbc = 1 To Workbooks.Count
If (Workbooks(wbc).Name = AFname) Then Exit For
Next
If (wbc > Workbooks.Count) Then
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=APath & AFname
End If
wsc = Workbooks(AFname).Worksheets.Count
Workbooks("X.xls").Worksheets(1).Copy after:=Workbooks(AFname).Worksheets(wsc)
For Each s In ActiveWorkbook.Worksheets
If s.Name Like ASname & "*" Then i = i + 1
Next
If i = 0 Then
ActiveSheet.Name = ASname
Else
ActiveSheet.Name = ASname & "(" & i & ")"
End If
End Sub
あれ?余計な ( ) が入ってたわ
145 :
デフォルトの名無しさん :2013/08/29(木) 21:05:46.53
VBAのコードで セルに文字列の数字を入力したいとき どうやりますか? ふつうにActivecell="123"みたいにしても文字列になってないんですよ。
>>145 Sub test1()
'アクティブセルに文字入力
ActiveCell.Value = "123"
End Sub
147 :
デフォルトの名無しさん :2013/08/29(木) 22:10:42.85
>>145 該当セルの表示形式が「標準」の時は、
ActiveCell.Value = "'123" の様に'を入れるか、
先にセルの表示形式を「文字列」に変えておく。
って、まじめに書いたけど、この質問は釣り?
148 :
145 :2013/08/29(木) 22:11:20.53
>>146 ん?
それでも変わりませんよ。
文字列になってないです。
149 :
145 :2013/08/29(木) 22:15:20.97
>>147 釣れた(笑)
って、釣りってなによ?
自意識過剰すぎるよ。
たしかに ' の方法でも、先に「文字列」に変えておく方法でも、できたけど、ここで質問。
この ' はいままでにも使ったことあったけど
表示では ' は見えないけどセルに値を変更しようとすると ' が再び現れる。
気持ち悪いんですけど。
というのは ' の性質をきちんと把握しておかないと
今後VBAでバンバンとコードを書くときに
不安でしかたがないじゃん?
' の性質についてExcelを使う上での注意点を教えてください、だれか。
150 :
145 :2013/08/29(木) 22:17:57.05
たとえばセルに値が '123 とはいってるとき LEN関数でこのセルの文字数を調べると4じゃなく3なんだ。 ' は文字としてカウントしない特別な文字ってこと? もしそうなら、もし ' を文字列としてセルの最初の文字に使いたいときはどう入力する?、みたいにいろんな問題が出てきそう。
151 :
デフォルトの名無しさん :2013/08/29(木) 22:29:07.51
>>149 「'」を使用して数字を文字列扱いするようになったのは、
エクセルが出来る以前(Z80時代)のビジカルクというソフトからの流れを汲んでいます。
後は自分で調べなさい、自意識過剰より。
Sub Macro1() ' セルに数字を入れる ActiveCell.FormulaR1C1 = "123" End Sub コレでどうだろ
>>152 こっちのほうがいいかも
Sub Macro2()
'セルに数字を入れて1つ下のセルに移動する
ActiveCell.FormulaR1C1 = "123"
ActiveCell.Offset(1, 0).Select
End Sub
何がしたいんだ
155 :
デフォルトの名無しさん :2013/08/29(木) 22:41:34.69
>>155 R1C1形式は行(Row)をRと行番号、列(Column)をCと列番号で表す形式
FormulaR1C1プロパティはわざわざ使う必要はないね 使ってる人はまず間違いなく「マクロの記録」に頼ってる人
158 :
デフォルトの名無しさん :2013/08/29(木) 23:04:09.19
>>157 そうでもないぞ
プログラムで数式設定する場合は結構便利
160 :
デフォルトの名無しさん :2013/08/29(木) 23:09:37.15
>>150 > もし ' を文字列としてセルの最初の文字に使いたいときはどう入力する?
例えば '13 3月 なら...
ActiveCell.Value = "''13 3月"
別に VBA じゃなくても普通に使うだろ?
162 :
150 :2013/08/30(金) 00:25:58.48
>>161 こんな場合は?
あるセルに「Rock'n'roll」という文字が入ってて
その隣セルに、mid関数でそのセルの5番目の文字から7番目の文字を入力(つまり「=mid(A1,5,3)」とする)とし、さらにそのセルを値コピーでそのまた隣セルに入力すると
そのセルは「'n'」となると思いきや、 ' の特別ルールのせいで「n'」になってしまう。
こんなことからバグが生じ、
例えば宇宙ロケットのコードを設計してるときに
この ' に起因するバグのせいでロケットが爆発し人が死ぬこともありえる。
163 :
デフォルトの名無しさん :2013/08/30(金) 01:24:25.98
>>162 頭の′以外は文字として認識されるんじゃなかった?
>>149 ,162
形式を選択して張りつけるとちゃんと'n'になるみたいだな
でまあ、文字列を表すために'つかうと色々ややこしくなる時があるのはその通り
だけどそれはそう言う仕様です
それでバグったらプログラマの仕様不理解でプログラマの責任です
注意点は使うなら気をつけて使ってください
なるべく使わない事をお勧めします
>>145 Sub これじゃだめなのか()
ActiveCell = "123"
ActiveCell.NumberFormat = "@"
End Sub
>>162 n'になるの?
なるならセルの仕様の通りで素直でよろしいじゃないの
>>162 > そのセルは「'n'」となると思いきや、 ' の特別ルールのせいで「n'」になってしまう。
根本的に誤解してると思うけど、' の処理は表示だけだよ。
VBA で直接値取得すればわかるでしょ。
そんな処理が気に入らないと言うなら、書式を文字列にすればいいだけだし。
そういえば某サイトの某公式ツールが ' のところでバグって 一部使い物にならなくなってたな。まさかExcelを使ってるわけないが。 なんにせよ ' は気色悪い。 , も気色悪い。たまに " も も気色悪い。
169 :
ほしほし :2013/08/30(金) 11:05:17.57
一つのユーザーフォームでリストボックスを使用せずに登録、新規登録、修正、削除は可能ですか? 可能ならばどのようにするのでしょうか? 超初心者な為に本やネットを見て作成してますがわかりません。 因みにリストボックスで試したのですが、項目が13項目あって作り方がわかりませんでした。
170 :
ほしほし :2013/08/30(金) 11:07:38.24
すみません、登録と新規登録は既に出来ています。修正と削除方法がわからないのです。 質問が抜けていました。
シングルクォーテーションもそうだが=もそう。 range("a1").value = "=123" debug.print range("a1").value debug.print len(range("a1").value => 123 => 3
>>169 修正、削除の対象をどうやって指定するの?
173 :
ほしほし :2013/08/30(金) 12:25:11.61
番号を振ってあるので検索ボタンを付けたいです。
175 :
ほしほし :2013/08/30(金) 12:39:01.68
それは私が質問しました、すみませんどうしてもわからなくて。。三か所に質問しました。
マルチポスト死ね
177 :
ほしほし :2013/08/30(金) 12:43:34.00
すみません。。わからなかったもので、どこで解決できるかもわからなかったので。
マルチポストがマナー違反と見なされるのは、以下のような理由による。 ・他のコミュニティーで付けられた回答を知らずに同内容の回答を付けてしまったり、他のコミュニティーですでに解決したことを知らずに検討を続けたり、善意の回答者の労力が無駄になる。 ・この場所だけでは質問が解決するか不安であるという不信感を表明することと、結果としては同じである。
ほんとコード提供スレになっちまったな
いいじゃん
181 :
ほしほし :2013/08/30(金) 13:12:33.95
すみません、知らなかったので三か所に書きました。 ご迷惑でしょうから、何とか自分で解決します。
私は人間というものを知りませんでした、という表明
183 :
デフォルトの名無しさん :2013/08/30(金) 13:39:05.89
なるほどー
185 :
ほしほし :2013/08/30(金) 13:56:50.10
迷惑かけたのに回答いただいてありがとうございます。
>>183 これはやってみたのですが何故か動作しませんでした。
もう少し頑張ってみます。
186 :
デフォルトの名無しさん :2013/08/30(金) 15:59:09.44
>>185 コードを記入したのは、ユーザーフォームで間違いないでしょうか。
同じエクセル2007で下記コードで、15列のリストボックス出来ました。
試してみてください。
Private Sub UserForm_Initialize()
'このコードは「ユーザーフォーム」に記入、シート・標準モジュールでは実行時エラー424になります。
'ダミーデータ作成
Cells(1, 1) = "日付": Cells(1, 2) = "会社名": Cells(1, 3) = "担当者名": Cells(1, 4) = "電話番号"
Cells(1, 5) = "メールアドレス": Cells(1, 6) = "住所": Cells(1, 7) = "テキストボックス1"
Cells(1, 8) = "チェックボックス1": Cells(1, 9) = "チェックボックス2"
Cells(1, 10) = "チェックボックス3": Cells(1, 11) = "チェックボックス4": Cells(1, 12) = "テキストボックス2"
Cells(1, 13) = "M": Cells(1, 14) = "N": Cells(1, 15) = "O"
For i = 2 To 10
For j = 1 To 15
Cells(i, j) = "Dat" & i & "," & j
Next j
Next i
'ここからリストボックスの操作
ListBox1.RowSource = "A1:o10"
With ListBox1
.ColumnCount = 15 '列数を15に設定 次の行で列幅を設定
.ColumnWidths = "35;35;35;35;35;35;35;35;35;35;35;35;35;35;35"
End With
End Sub
>>186 本人が頑張るって言ってるんだから大きなお世話だろ。
>>187 大きなお世話はお前の方。無意味なレスするぐらいなら黙ってろ。
>>188 質問者の「もう少し頑張ってみます。」という言葉は尊重しないってことね。
190 :
ピラフ :2013/08/30(金) 18:26:54.68
お前が脇から言うことじゃないってことだよ。
ピラフに先にレスされたw
>>188 手取り足取り1から10まで全部教えたら質問者の為にならんよ
194 :
ピラフ :2013/08/30(金) 18:37:29.39
>>193 てめえは質問者の保護者にでもなったつもりか?お〜ん?
お前に教えられたらIQ下がるわ。責任とれんのか?どうやって?
無理だよね。じゃあ保護者気取るべきじゃないし、質問者は2歳児でもないよね。
まんまんに毛がはえたら自分のことは自分でやれるだろ。それが自律というものだ。
アダルティが集うスレで質問者のためとかどうとかいうのはただのバカであることを自覚しろ。
195 :
ピラフ :2013/08/30(金) 18:40:37.44
結局さー、回答者が質問者より上だというそういう調子に乗った態度が
>>193 のような
やつを作り上げるんだよね。質問者のほうがお前よりよほど頭いいだろと。
何様だよと。でてけよと。ここはピラフの憩いの場。何人も荒らすことは許さない。ピラフ許さない!!
パイパンうぜぇ
>>193 為になるか為にならないかは人それぞれだし、そんなん知るかw
少なくとも
>>193 の書いたくだらんレスよりは、他人の書いたコード見てた方が為になるわ。
>でてけよと。ここはピラフの憩いの場。何人も荒らすことは許さない もう来んわこんなスレw
ってかさ何でピラフが横から入ってくるんだ? 関係ないだろうに。
なあ、ピラフ 桃白白知らない?
201 :
ピラフ :2013/08/30(金) 18:57:46.81
>>199 はあ?ここはピラフの憩いの場なんだから、ここで行われた発言は
あまねくおしなべてピラフへの発言だろ。このスレ誰が建てたと思ってるの?
ピラフじゃないことは確かだけど、ピラフはとても感謝しています。いつもありがとうございます。
今後ともよろしくお願い申し上げます。
ピラフちゃん好きだよ
はやく夏休み終わらんかなぁ
ピラフさんのピラピラを広げてグヘヘヘ (´・ω・`)b
まだレス200か。無駄に争うのは不可避なようなので次スレでのれん分けしないか。 ここはコード提示は厳禁にして、新規スレはコードで語れってことにしないか。てかしようよ。 共存できるなら不要だけどお互いに相容れない以上はその必要があると思う。
コード提示禁止でプログラム言語の質問スレが成り立つとは思えん
207 :
デフォルトの名無しさん :2013/08/31(土) 04:08:07.00
>>205 プログラム質問スレでコード書かなかったら成り立たないだろ
>>206 >>207 だから二分しようよ。
コード出すな、糞コードだ、云々、延々。
不毛だし。
成立しないならしないで廃れるだけだし、荒れてしまうよりは全然OKかなっと。
それとも「コード提示行為の議論は禁止」とでもテンプレに入れる?
ここまで不毛に言い合ってきて今さら効果あるかなというか、住人の皆の収まりがつくかね。
>>205 コード提示禁止というより、質問者がコード提示してもないのに
回答者が勝手にコードを提示するのが問題だと思う。
別スレというより「VBAなんでも質問スレ」で充分だと思うけど。
元々ここから派生したスレだし、スレのルールは無いに等しいし。
ってかさ、このスレでコードで語りたいっていう奴は、
一部の回答者しかいないから別スレ立てても意味ないと思うけど。
あえてやるなら、「VBAなんでも質問スレ」に誘導で充分だと思う。
誘導しても回答者しかいないからコードの議論になるか怪しいものだが。
質問者がコードで質問してきたらコードで返せばいいし、
文章で質問してきたら文章で返せばいいんじゃね?
>>205 はコード提示厳禁をルール化しようと思ってるようだけど
既に
>>1 の★5で既にルール化されてるから。
コード書くなって奴は何なの?
コードも書けずに偉そうに理屈垂れることが出来なくなるから
難癖付けて嫌がっている様にしか見えん。
>>1 ★5のクレクレと、説明時にコードを書くのは別問題だろ
嫌なら自分で別スレ立てろ。ここはお前が王様のオナニースレではない。
211 :
ピラフ :2013/08/31(土) 05:56:21.94
どうやって考えを相手に伝えるかはそれぞれの自由だ。問題なんて一切ない。 ただの嫉妬。
212 :
186 :2013/08/31(土) 08:01:19.11
私の記入したコードで問題になってるようなので、私の考えを記入させて頂きます。
今回は、質問者のレベルが初心者と判断、
>>183 で参考URLを提示、
>>185 で「何故か動作しませんでした」、とエラー内容も把握できないレベルと判った。
質問者のやりたい内容は顧客管理の様なDBで、
質問は「リストボックスで10列以上が出来ない」、
その部分のヒントとして15列のリストボックス・コードのサンプルを提示しました。
コードの中に"会社名"等が入ってるから、丸投げ作成と誤解されてるようですが、
それらタイトル部分は質問者は既に作成できています。
質問者のレベルに合わせて、サンプルコードを理解してもらうために、
敢えて単純なコードでダミーデータも作成しました。
チェックボックスの処理、件数増加時など、
質問者の作成しようとしているDBには、まだ問題が山積みでしょうが、
それは自力で一歩ずつ覚えていく事で、
つまづいたら、また部分的に質問して貰えればと思っています。
.
VBAに限らず、どの言語も他の言葉だけで説明し、理解してもらうのは難しいと考えます。
多くの書籍がコードを載せているのはその為でしょう。
他の言語と比較して、VBAが簡単と言われていても、
初心者には未知の宇宙語なのだと思います。
>>210 質問の流れを無視してコードを書くのが問題なんだが。
質問の流れで質問者がコードを提示して、それをもとに回答していくなら問題ないと思う。
コードを提示されてない、仕様は曖昧、不明な仕様を質問者に聞こうともせず
いきなりコードを書くという行為は、あさってなコードを書いてしまうというリスクがある分
無駄な作業なんだが。
>>1 ★5は質問者だけでなく、回答者にも言えることだろ。
回答者はヒントを出せばいいだけ、解答コードを晒す必要なんかないってこと。
このスレのルールを守れないやつが別のスレ立てればいいと思うけど
スレのルールを守れないやつがスレを立ててもダメなんだろうな。
だってスレのルール守れないんだもん。
214 :
ピラフ :2013/08/31(土) 08:07:10.64
>>213 質問者がヒントだけでよければコード読まなきゃいいだけだろ。
お前さ質問者を何だと思ってるわけ?回答者の発言でコントロールしなければ
ならないミジンコみたいなものだとでも思ってるわけ?他人の回答にいちゃもんつける
お前のようなゴミ野郎が消えればこのスレは良くなるだろ。問題なのはお前の存在だけ。
>>212 後出しジャンケンもいいところ。
エラー内容も把握できなかったら聞けばいいだけなんだが
何でそんな簡単なことができないのかな。
質問者も焦っているようでもなし。
自らコミュ障を露呈しているようなものだ。
216 :
ピラフ :2013/08/31(土) 08:08:58.08
>それをもとに回答していくなら問題ないと思う。 何様だよ。どういう立場でものいってんだ。ピラフぶちぎれんぞ。
217 :
ピラフ :2013/08/31(土) 08:10:25.57
>>215 お前は聞いたのか?聞くべきだとお前が思ってるのならお前が聞くべきだ。
他の回答者にけちつけるんじゃなくて、自ら動いてすばらしい回答者っぷりを
発揮してくださればいいじゃないか。なんで自分でやらずに他のやつの足ひっぱるような
まねするんだよ。コミュ障はお前だよ。
218 :
ピラフ :2013/08/31(土) 08:12:35.98
質問者と質問に答えようとする善良な回答者と、 質問者のためになってないといって回答者にいちゃもんつける完全なるゴミがいる。
219 :
ピラフ :2013/08/31(土) 08:14:52.01
>>215 お前まだ手だしてないけど?
後出しじゃんけんといいたいだけなのか?wwwぶひょひょひょwww
ピラフ大爆笑wwwww
>>217 >>185 を声を出して一億回読め。
本人で解決しようとしている訳だから質問者目線で言えば、これ以上深入りしても余計なお世話だと思うが。
だから質問者は沈黙してる。それでいい。 深入り不要と思ったら沈黙しろ。見る必要がないと思ったら見るな。 質問者のためにならなくても、他の人間にはためになることもある。 だから自由に解説させてやれ。コードを書かせてやれ。 VBAスレなのにVBAを止めようと嫌味なレスばかりしている奴が居るから余計なレスが増えて荒れるんだ。
222 :
ピラフ :2013/08/31(土) 08:47:28.22
>>220 立派な考えだな。小さな気遣い余計なお世話ということわざもある。
しかし、その考えを他の人に押し付けてお前もこう思えこうやれっていうのは独り善がりだよ。
世の中にはいろんな人がいる。コードを書いて詳細をつめていったほうがわかりやすいと
思ってる人もいれば、たんに雑談したいだけの人もいる。頑張りますといって
助けを待つ人もいれば、頑張りませんといって影で努力する人もいる。
俺ぜんぜん勉強してねーわーやべーわーという人もいる。お前がどう考えるのかは
とうぜんお前の自由だが、それを他の人に強いてルールだなんていうのは身勝手だな。
自分の考えをもつことは大事だと思うけれども、他人の考えにぶつけてしまうのはへたくそですわ。
頭のナットが緩んでる社会人2年目くらいの木偶の坊がやらかす衝突事故ですわ。
224 :
デフォルトの名無しさん :2013/08/31(土) 09:49:40.71
>>222 お前が言いたいことはルールなんかクソ食らえ、俺のやりたいようにやるってことだよな
225 :
ピラフ :2013/08/31(土) 10:01:19.42
>>224 違うよ。いろんな人がいるよってこと。
自分の考えを他人に押し付けてこれがルールというのは独善的で井戸の中の
カエルさんならそれでいいかもしれないけれども、それって井戸魔人でしかないよねってこと。
226 :
ピラフ :2013/08/31(土) 10:02:32.81
結局の所、自分の意見をやれあーしろこーしろ行って押し付ける奴は 他の奴にとって迷惑でしかないと言うことだな。 好きなスレ立ててそこでやれ。ここから出てけ。
嫌なら見るな君、口出すなちゃんは、この手の話にしっかり反応してるのね。スルーすればいいのにと他人をバカにしつつも。
>>228 そういう奴はこの手の話が嫌ではないんだろ
なんの不思議もない
>>225 >>224 の言うとおりにしか見えないが。
いろんな人がいるからこそスレにルールがあるっていうことも分からないのかな。
いくら熱弁してもスレのルールを守れないようじゃ誰も話を聞かないよ。
>>231 いい加減引き際を弁えろ
誰もお前の押し付けたルールの話なんぞ聞きたい奴なんかいねーよ。
いつまでもうじうじとみっともない奴だな消えろよ。
>>232 横やりだけど、押し付けたルールってなに
>>232 >>1 ★5を盾にしてコイツはまた沸いてくるって前俺が言ったとおりになったな。
これで分かったろ?
>>1 ★5は改変するか削除するべきなんだ。
236 :
ピラフ :2013/08/31(土) 17:54:49.65
>>231 ピラフは違うと言ったわけだから、見える見えないの問題じゃないよ。
違うといったピラフの発言をかみ締めるべきだよ。違うといったにもかかわらず、
そうとしか見えないといって持論を推し進めるのはずいぶんなガンコ者だな。
どうやったらそんなにかたくなな生き物になるのかピラフはお前の親御さんの子育て方針を
拝聴つかまつりたい気分でおじゃるわ。ピラフのみやびなお耳でお聞きあそばしたいわ。
237 :
ピラフ :2013/08/31(土) 17:59:13.35
>>233 縦やりなんだけどーピラフこれだと思うー。
>質問者がコードで質問してきたらコードで返せばいいし、
>文章で質問してきたら文章で返せばいいんじゃね?
>
>>205 はコード提示厳禁をルール化しようと思ってるようだけど
>既に
>>1 の★5で既にルール化されてるから。
回答者や回答内容の質をどうこう言うのはまだ理解できるとして コード禁止ってやつは何考えてそう主張してるんだ? コード禁止したら回答の質が上がるとでも思ってるのか?
もう質問も回答も禁止にしちゃえばいいじゃない
>>238 頭ごなしにコード禁止って言ってるやつは見たことないけど?
もうコード禁止って言ってる奴を頭ごなしに出入り禁止にしろってのを
>>1 ★5にしておけばみんな幸せ
242 :
デフォルトの名無しさん :2013/08/31(土) 19:20:39.74
「文字列」で保存されてる数字のセルがたくさんあります。 これをVBAで「数値」に変えるには どういうコードを書けばいいですか?
>>242 「excel vba 文字列を数値に変換」でぐぐればいいんじゃね?
244 :
デフォルトの名無しさん :2013/08/31(土) 19:32:17.41
>>243 どうぐぐればいいのか聞いてません。コードを提示できない無能は黙っててください。
246 :
デフォルトの名無しさん :2013/08/31(土) 19:45:48.20
なんでぐぐらなきゃわからんようなやつが回答しようとするかね。
248 :
242 :2013/08/31(土) 20:12:32.37
これはもうアレだな。
「ググれ」「グーグルつかえ」「ククレカレー」
アホの1つ覚え。
これは現代版の荒らしだ。
>>244 >>247 あなたはニセモノですが、オレの言いたいことを見事に大便(=代弁)してくれてありがとう。
次の方どうぞ
>>248 数値化したいセルはランダムなのか表になっていてその範囲なのかシート全体なのかを書いてくれないとコードも書けない
252 :
242 :2013/08/31(土) 20:25:33.93
>>250 そこは適当でいいです。
セル1つ変えることができればあとはなんとでもなるんで。
なので
ActiveCell=
の続きを書いていたたければ嬉しいです。
コード作成依頼スレになってるね。
>>254 なってないだろ。仕様を述べるから全部実装しろというのなら作成依頼だが、
数値に変換する方法を聞いてるだけだ。
>>242 Sub こんなんはどうだろか()
Dim x1 As Long, x2 As Long, x3 As Long, x4 As Long
Dim r As Long, c As Long
Dim x As Range
Set x = ActiveSheet.UsedRange
x1 = x.Row
x2 = x.Row + x.Rows.Count - 1
x3 = x.Column
x4 = x.Column + x.Columns.Count - 1
For r = x1 To x2
For c = x3 To x4
If IsNumeric(Cells(r, c)) Then Cells(r, c).NumberFormat = "General"
Next
Next
End Sub
EXCELは値が数字だけなら、その値は数値、数字以外の文字があると文字列と判断するから ActiveCell.Value =つかって同じセルに書き出せばいいんじゃないかな? それかSelection.NumberFormatLocal = "0_ "で書式を設定するのは?
質問スレの回答として、ぐぐれば簡単に解決できる事で質問に値しないという意味で検索しろってのは至極まともだと思うな。
>>1 ★5、★6はスレのルールとして正しいと解る例だ。
260 :
242 :2013/08/31(土) 21:00:16.60
>>258 ぐぐらないとわからないくせにw一人でぐぐってろよ。
ぐぐれとかいいなぁ なーんも考えないでも言えるもんなぁ
ぐぐれかれー
Sub UNK() 'A1セルの書式を数値(整数)に変更する Range("A1").Select Selection.NumberFormatLocal = "0_ " ActiveCell.Offset(1, 0).Select End Sub 整数ならコレでいいんじゃね?
>>242 文字列で16桁以上の数値が書かれている可能性があるけどそこはどうすんの?
うわぁ 釣れた宣言する奴ってまだ生息してるんだ。 とっくに死滅したもんだと思ってた。
和気あいあいとして楽しそうだな 誰か俺の夏休みの宿題も手伝ってくれよ
ルールは尊重されるべき。 気に入らなきゃ次スレでの★5削除を提案するしかない。 ★5の是非はおいといてルール違反の指摘に逆ギレしてたらそら荒れるわw
あと最近のピラフ沸点低くない? 例の糞コード事件以後、荒らし行為が増えつつあるような気がする。
ルールと言うが回答者がコードで書いてはいけないなどというものはどこにも書いていない。
>>1 ★5と言ってるがどう曲解するとコードで書いてはいけないことになるのか。
あらゴメンナサイ スレ斜め読みしただけでした。 ★5違反じゃ無いのね
コード回答は別にいいと思うんだけどさ、
糞コード書いてる人って自分で一度でも検証してるのかね?
>>242 への回答なんかまるでダメじゃねえ?
ネタだろ
糞コードって口では何とでも言えるからな。 それ以上のコードを書いて糞っぷりを証明しないと相手にもならんだろうな。
証明も糞もないよ まともに動作しないんだから
こっちではまともに動作したよ なんでまともに動作しないか検証したら勉強になるかもよ
>>256 Sub こんなんはどうだろか()
Dim x As Range
ForEach x In ActiveSheet.UsedRange
If IsNumeric(x.Value) Then x.NumberFormat = "General"
Next
End Sub
惜しい… ForとEachのあいだにスペースさえ入っていれば…
>>280 これは素晴らしいな。
自分の環境のせいで動作しないのかもしれないのをろくすっぽ調べもしないで糞コード呼ばわりするのと、
余計なことは一切言わずに改良案のコードを提示するのとで、
どちらがまともにコミュニケーション取れそうなのかを一目瞭然で理解出来る素晴らしい例だ。
283 :
ピラフ :2013/09/01(日) 10:04:58.86
/!/{ / ヾ--r
_ /  ̄ <_
_>`´
>>272 ___<_
> r‐'" ̄ ̄ ノ ̄ ̄`ヽ、―ニ 二
/ , | `ヽ/ ´`ヽ _ 三,:三ー二
 ̄/ | ノヽ--/ ̄ , ` ̄ ̄ ̄
/ /⌒ヽ,| ミ } ...| /!
レ l d _}`ー‐し'ゝL _
| ヽ、_, _,:ヘr--‐‐'´} ;ー------
|/| \ ノ`ヾ:::-‐'ーr‐'"==-
ヽ/l/|` ー------r‐'"  ̄ ̄
|└-- 、__/`\-:、
__,ゝ,,_____/ \_」 \
なにが糞コードだおら
284 :
ピラフ :2013/09/01(日) 10:09:50.50
/Y / r-、 _
7:::ヽ /V::::/ /::t__ __
/:/`' 7::::く /:t-i::/ ./ ̄____:::::/
l,/ /::/ヽ' ヽ;:`'/  ̄,-, //
l,/ /:/ /:/
`' `'
,;;---−―――――--,,,
/ \
>>272 「ぐぇああああ!」
, ; / \
c==ー^ /li <こ_ .:; イ.:.:.:.:.::.:\ : : \:.:.:.::;;;;>'"
z ,ィ≦ ム}|/__/´⌒ /.:.:::::.:.:::.:.:.:.:ヽ .::.:.:;;ィ'" /
__ -一 .:fr'/{ミ ,彡/ ,/.:.:.::::/.:.::::ノ_,,,:::-一宀 ´ {
c== ¨¨ /^{ノ ilil// /⌒´ ̄ ̄ ̄`7´ / / ',
c に≠==ー 厶- il,/ 〃 ー/, { { i ヽ
`ート、 〃 {i ヘ. :丶ヽ: : :ヽ: : : : : : : : : : { :\
C °。 : . ヘ にヘ,{i ヽ.i{ . . . . . : : : : ヽ、:\: : : :\: : : : : : : : ヽ. : :
: ', ,〉ィヘ ヾミ{!. : : : : : : : : : : : : : :\. :\: : : 丶: : : : : : : : \
. ィー- く {^ヽ人 ヘ≧ー‐rー宀7⌒ヽ. : : ヽ、__. : : : : :\. : : : : : : :
/ :` 、: :トこ´ ヾ ¨>く__ノ _,人___/, ¨¨¨"¬r一=,,___ : :
/ , ヘ、__ 彡彡 ´ _ ー
/ . : : : ´¨¨¬ , /
./ ヽ、 /
ハートブレイクショット
285 :
ピラフ :2013/09/01(日) 10:11:15.41
∧_∧
◎ へ (´<_` )
\ ≫ ̄ ̄ ̄ ̄彡ヽ ̄ ̄ ̄ ̄ ̄ ̄⌒ \
彡____人 )  ̄ ̄ ̄ ̄ ̄\ )
◎-●一( * * ヽミ |. |
((_ _ (( ( ;;-=- ̄=─ ̄ '⌒ヽ〉 | |
‘,'.∴・,‘・(ε (( ヽ-=_二__ ̄ \ | |
,'.・∵ ヽ_____ ノ  ̄\ / /
(__)) ヽ .\__/_丿
| |
>>272 ヽ .| |
| |______) | |
| 〉三三三[□]三) | |
ノノノノ:::::::::::::::::::::::::::::/ \ ヽ
~~~|::::::::::::::::::/:::::::/ \ |
|;;;;;;;;;;;;;;;/;;;;;;;/ / ノ
(___|)_|) `-
ピラフって優しいキャラかと思ってたのに 実は凶暴なんだな
287 :
ピラフ :2013/09/01(日) 10:17:29.05
∧_∧ トンファーキ〜ック!
_( ´Д`)
>>272 / ) ドゴォォォ _ /
∩ / ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _
| | / / | ( 〈 ∵. ・( 〈__ > ゛ 、_
| | | | ヽ ー=- ̄ ̄=_、 (/ , ´ノ \
| | | | `iー__=―_ ;, / / /
| |ニ(!、) =_二__ ̄_=;, / / ,'
∪ / / / /| |
/ / !、_/ / 〉
/ _/ |_/
ヽ、_ヽ
288 :
ピラフ :2013/09/01(日) 10:24:53.25
:: .|ミ|
:: .|ミ| ::::::::
::::: ____ |ミ| ::::
:: ,. -'"´ `¨ー 、 ::
:: / ,,.-'" ヽ ヽ、 ::
:: ,,.-'"_ r‐'" ,,.-'"` ヽ、 ::
:: / ヾ ( _,,.-='==-、ヽ ヽ、
:: i へ___ ヽゝ=-'"/ _,,> ヽ
:: ./ / > ='''"  ̄ ̄ ̄ ヽ
:: / .<_ ノ''" ヽ
>>272 i
:: / i 人_ ノ .l
:: ,' ' ,_,,ノエエエェェ了 /
i じエ='='='" ', / ::
', (___,,..----U / ::
ヽ、 __,,.. --------------i-'" ::
ヽ、_ __ -_'"--''"ニニニニニニニニヽ ::
`¨i三彡--''"´ ヽ ::
289 :
ピラフ :2013/09/01(日) 10:29:20.69
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__)____
>>272 | ` ⌒/ \
. | /( ○) (○)\
. ヽ / ⌒(n_人__)⌒ \
ヽ |、 ( ヨ |
/ `ー─− 厂 /
| 、 _ __,,/, \ ドス
| /  ̄ i;;三三ラ´ |
| | | ・i;j: | |
え、お前らのExcelってセルの書式を数値とか標準にするだけで 値の型まで数値型に変わるの? ふーん
291 :
ピラフ :2013/09/01(日) 10:43:59.42
>>290 変わらないよ。もしお前が
>>242 で、値の型まで変わって欲しいと
思ってるならそれを改めてみんなに伝えるべきだよ。こうなってほしいと
すなおに伝えるべきだよ。自分がどう思ってるのかをきちんと伝え切れてないから
生じた認識の違いでしかないんでそれをもとにどうこういったってくだらないだけだよ。
ピラフってなんで桃白白の匂いがするの?
どっちもクズの臭いがするだけだよ
白桃入りのピラフってうまいの?
クズの味しかしねーよ
>>292 それはね、同いt…うわ何をするやめr…
つまり婿養子になったのか?
298 :
デフォルトの名無しさん :2013/09/01(日) 21:45:16.89
>ピラフさんへ 馬鹿どもの妄言集に惑わされず、コードを書いてください。 コードから救われる人もイますし、コードで何か発見できる場合もあります。 馬鹿どもはひとつのやり方に固執し、「コードを書く」という違う観点からみるということもできない、 おおよそ匿名掲示板にふさわしくないノータリンです。 ピラフさん応援してますよ!
いつも自演ご苦労様です
301 :
ピラフ :2013/09/01(日) 22:21:00.64
どんな議論も >何言ってんだお前、はい論破。 でお終いか。こいつぁ楽でいいや
はいはい、夏休みは終わりましたよ
まだ終わってないっての
いつの間にこんな荒れたスレになったんだ、去年とか覗いた時はもっとみんな紳士だったじゃないか。
クソの山ですな
2010で右クリックで出る各メニューを無効化/有効化とか名称変更を行いたいのだけれど コマンドID一覧とかってどこに書いてるでしょうか? MSDNのメソッドの説明を見に行ってもIDを設定するとしかかれてなくて、それに対応するIDは何?って感じで詰まっています。
308 :
デフォルトの名無しさん :2013/09/02(月) 23:19:30.54
>>308 サンキュー、その辺もひと通り目を通したんだけど○○を追加すれば出来るしか書いてなくて
その○○に当たるものは他に何があるのか?が判らない状態なんです。
例えば
CommandBars("Cell").Controls
この”Cell"でセルのコントロールを変更出来るのだけれど、じゃあ他のオブジェクトは?となりますし
FindControlにIDを指定したらそのコントロールを変更出来るのだけれど、IDのリストは?ってなると
調べても全然出てこないという・・・
310 :
デフォルトの名無しさん :2013/09/02(月) 23:39:00.52
>>310 見てみるとアイコンのIDみたいだ、後Excelのバージョンによって番号が変わったりするそうだから
古いやつだとダメなんだ…
Controlsに追加するべき番号であればMSDNフォーラムに97の一覧があるのは見つけたんだが…
312 :
デフォルトの名無しさん :2013/09/03(火) 00:16:03.95
>>312 thx、MSに問い合わせるしかないか…
314 :
デフォルトの名無しさん :2013/09/03(火) 01:03:10.54
お、ここは検索代行してくれんのか
ざーとらしい
いいじゃん
質問です。 For x = 1 To 1000 y = ((169902 - 1 + 1) * Rnd + 1) If 0 < y < 35 Then → Cells(x + 1, 4).Value = 149 ElseIf 35 <= y < 77 Then Cells(x + 1, 4).Value = 124 ElseIf 77 <= y < 108 Then ・・・・ end if next x というプログラムを組んだのですが、yの数値がどんなに大きくても、必ず矢印のところでfor構文が終了してしまいます。 理由がわからないのですが、何が原因だか教えていただけませんか?
>>320 ○ If (0 < y) And (y < 35) Then
× If 0 < y < 35 Then
323 :
デフォルトの名無しさん :2013/09/07(土) 15:17:59.68
「オフィスの達人〈5〉VBA活用術―Excel/Word/Access/PowerPoint/Outlook Office 2003対応」 この本のように Officeのいろんなソフトを連携して使うためのVBAのコードが解説されてる本ってないですか? VBAといやほとんどがExcel、たまにAccess、まれにWordの本しかなく 連携で使うのを解説してる本って、上の本以外皆無。 上の本は古いしもう買えないので最近は出てないの?
Amazonのマケプレで買えるじゃん高いけど でも連携ってCreateObjectかGetObjectでアプリ開いて操作するだけじゃないの? それとも本一冊費やして説明する程の何かがあるのかな
Excelは仕事で使うものの、マクロやVBAなど全く分からないので どうか教えてください。 スペックはXPでExcelは2003です。 現在B1セルに○月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セル日付を○月2日 ○月3日… シート名を2日 3日…となるように、一ヶ月分のbookを作りたいと思っています。 また、その際に、シート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいので、とりあえず祝日リストは別シートで作ったのですが 肝心のコードが全く分かりません。 一応ウェブを漁って、それらしいコードを拾って動かしてはみたのですが いまひとつ、作りたいものがうまく作れないので どうかよろしくお願いいたします。
因みにB1セルの日付はシリアル値で入れ、 書式で○月○日と表示していて 日付が日曜・祭日に当たる場合は赤文字になるよう 条件付き書式で設定してあります。
327 :
ピラフ :2013/09/07(土) 18:22:40.30
>>325 ナイスクエッションだ!ピラフも考えみる!!
こりゃ荒れるぞ
330 :
ピラフ :2013/09/07(土) 19:17:03.79
考えたけどピラフわかんなかった。
>>325 全部いっぺんに作ろうとすると大変。
これらのコードが書けるのであれば後は組み合わせていけば作れると思うけど。
・シートの追加
・シート名の設定
・シート名?タブ?の色設定
・セルの値設定
・曜日の取得
コードが全く分からないからコード作れ!!!!っていうのはこのスレのルール
>>1 ★5に反してるからNG。
325です、すみません、私のようなド素人が来てはいけなかったいけなかったでしょうか… でもどこで聞けばいいのか分からないし、本当に困っているので 誘導若しくはヒントだけでも教えていただけると助かります。 お願いします。
333 :
デフォルトの名無しさん :2013/09/07(土) 20:02:16.84
スレチかもしれませんが、WEEKDAYという関数について教えてください =WEEKDAY(2013/9/7)と入れると「2」が返ってくる。 A1に=DATE(2013,9,7) その後=WEEKDAY(A1)とやると「7」が返ってくる なぜ返ってくる値が違うのでしょうか?お願いします
>>331 レスありがとうございます、助かります!
仰るとおり、各パーツごとなら調べたコードで動いたのですが
その組み合わせ方がどうもよく分からないんですよね…
もう少し自分で動かしてみて、
コードを添削・改良していただく事はできますでしょうか。
>>332 ウェブを漁って、それらしいコードを拾って動かしてはみた
のに全くわからないのなら、俺らにどうしろというんだ?
>>333 「/」は除算記号だしスレチだ
337 :
ピラフ :2013/09/07(土) 20:07:25.87
338 :
ピラフ :2013/09/07(土) 20:08:14.20
339 :
sage :2013/09/07(土) 20:08:26.09
>>335 なるほど。ありがとうございました!
そしてスレチすみませんでした
340 :
ピラフ :2013/09/07(土) 20:21:48.91
>>336 誘導ありがとうございます。
そちらで聞いてみようと思います。
ありがとうございました。
342 :
デフォルトの名無しさん :2013/09/08(日) 00:08:27.68
>>336 「VBAなんでも質問スレ」では、
「Excel VBA の話題なのになんでここに誘導されて来るんだよw 」
との意見。
これをどう思う?
そこの住人はExcelVBAはVBAじゃないと思っている。 じゃーExcelVBAってどういうVBAなんだ?
Excel VBAのスレがあるのに
なんでこっちに誘導されてくるのかってことだろ。
俺は別にどちらでやってもいいとは思うが
いつもけたたましく
>>1 ★5と吠えてるあの荒らしは死ねばいいと思っている。
もう向こうが本スレでいい こっちは永遠にテンプレの議論でもしてればいい
向こうはコードつくってて楽しそうだなぁ
どっちでもいいよ。 ただ今は★5がありそれを肯定する人間が居る。 そんな中俺ルールで好き勝手やり始めたら荒れるのは当然だよな。
★3★4もどうかと思うわ
何でも許すと文章は質問なんだけど結局コード作成依頼スレになって 質問スレじゃなくなるからこのままでいいと思う。 別にあっちはあっちで楽しそうと思えるのならそれでいいんじゃね? そっちに行けばいいんだから。
そうだね、
>>1 のテンプレに性格的問題があるから
このスレはもう糞スレ決定だね
だな。俺も向こうに行くわ。 質問にコード絡みのものがある場合は一々荒さんでも向こうに誘導すればいいだけだしな。
でもコードで語ってるというより、コードを押し付けてるようにしか見えないw
つくづく憐れなやつだな
>>349 うわ、本当だね。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
要するに、通常の代入や四則演算、分岐や繰り返し処理が入ると全部スレ違いだね。
それがないとExcelVBAの機能に付いて説明が出来ないものを除くとも何も書かれていないものね。
しかもコードどうの以前のところだから普通の説明でもダメか。
うわー残念だなー。でもテンプレは守らないとなーw
もうVB6が広く使われている時代じゃなくなってるのに 「VB6で出来ることはスレ違い」って頭固すぎでしょ
VB6スレは去る9月1日、長い歴史に幕を閉じました(涙) だからVB6の次スレが立つまでは、ある程度VBも出来る事もOKにしない? 「実行環境がExcelならOK」とか。
>>358 訂正
ある程度VBの質問もOKって事にしない?
テンプレには抜本的な改修が必要だな。 だが、このスレではテンプレでそう書いてあるんだから仕方がない。 次スレでは修正するとして、このスレでは全てスレ違いになるので、 何でもスレの方でやるしかないな。
362 :
358 :2013/09/08(日) 12:01:20.22
はいはい
>>363 経緯はどうであれ、今そうテンプレに書いてあるんだから仕方がない。
次スレでテンプレ改修してくれ。それまでは何でもスレに誘導してくれ。
今のテンプレのどこが問題なのかわからんが。 要はクレクレ君も受け入れたいって話?
>>366 ★5の解釈が曖昧な事
クレクレは論外として、やる気はあるけど全く分からず結果丸投げとか。
こういう質問への対応を巡って荒れる事が多い。
経緯を理解しようともしないのか。 人の話を聞こうともしないやつに指図されても従う奴はいないと思う。
ここは変える必要ないよ テンプレに沿わない質問なんかはなんでもスレに回せばいいじゃん
その通り コードでの回答も結果クレクレ対策の阻害になる可能性があるし、 VB6で出来る事は1命令でもExcelの機能から外れる所がある場合は Excelの機能とは無関係なのでその部分を飛ばして話さなければならない。 守れない様であれば何でもスレでやれ。
クレクレ対策なんて、答えたい人は答えて 答えたくない人は単に無視していればいいのに、 このスレでは質問者も回答者もことごとくけなして潰すのが ほぼデフォになってるし、そりゃー機能不全起こして荒れるわな。 スレ奉行は放っておいて、早めに新スレたてた方がいいかもな。
>>371 いつも同じ事を言うだけなんだよな。
それを許すと質問スレじゃなくなるって言われ続けてるのに。
新スレというよりなんでもスレで充分だろ。
むしろ、許さない人がずっと張り付いているから質問スレとして成立していないように見える
374 :
デフォルトの名無しさん :2013/09/08(日) 16:36:24.96
>>372 このスレの存在意義は?
「なんでもスレ」は何でも受け付けると言う事だよね、質問も含めて。
このスレ意味無いじゃん。
>>373 そうか?
許すやつがいるからコード作成依頼が来てるわけだが。
コード作成依頼を質問と言い張るならいつまでたってもこの問題は解決しないと思う。
コードがわからないから質問したくなるのが普通の心情だろうに、 コードがわかっているけど敢えて質問するというニッチな質問者ばかり追い求めようとするから スレの意義が現実離れして存在意義も希薄になる。 その辺に対する反省がない限り、機能不全状態は続くと思う。
コードが書けなくても質問に答えたいのも普通の心情だろうが わかってやれよ
つまり、コードが書けないからコード作成依頼は許せない、と。そういうことか。
>>376 このスレのルールはヒント出せばコードを書ける人を対象にしてるだけなんだが。
そのルールを守れないということなら別のスレでやればいいだけなんだが。
掲示板がどういうものか理解できてないとしか言えないんだが。
こう言うバカは一度干してやらないと分からんよ。 こいつ1匹残して皆なんでもスレに移行すればいい。
大したヒントも出さずに底意地の悪いレスばかりしてるくせに、どの口が言うかw
まぁVB6で出来ることを書いてはいけない時点で 殆どがスレ違いになるだろうから 必然的にみんな何でもスレの方に行くだろうけどな
>>382 VB6で出来ることかどうか判断できるようなやつは
こんなとこで質問なんてしないって
つーかExcel VBAで出来る事って、ほぼ全てVB6から出来るだろ どういう線引きなんだよ?
>>383 つまりテンプレとして役に立ってない訳だ
スレタイにひかれて罠にかかった質問者を スレ違いだと寄ってたかっていじめ倒すためのテンプレとして 役に立っている。マジ糞スレだなぁ。
あ、そのひと質問に対して過去ログ読めとかググれとかしか言えないんすよ あとコード書いてる人をけなしたりとか
くれくれ君に回答したくなければ無視したらいいだけなのに。
テンプレに何か書くと、すぐにそれを拡大解釈して盾に取って「スレ違い」とかぐだぐだ言いそうな人が居るから 無駄な文言は一切入れない方がいいと思う。
テンプレ変えようって話はまとまらないと思うよ なんでもスレに行けばいいじゃん
>>394 だな。スレのルール守れないやつがテンプレ考えてもどうせルール守らないだろうし。
なんでもスレでもいいけど、「Excel VBA なんでも質問スレ」があってもいいと思う。
いや、むしろこのウダウダ言ってる荒らし一人を出入り禁止にすればこと足りる訳で
>>397 そっか〜、どうやんのか知らんけどがんばってくれ〜
いや、テンプレに追加するだけだろ。 元々テンプレ絶対論を唱えたのはその荒らしだから 本人が守らない訳には行くまい。
なにかにつけて悪意的なレスばかりして、質問者にも回答者にもストレスをかけまくる面子が常厨 ↓ 常厨への不満爆発 ←いまここ 今のアホテンプレは論外だけど、多少テンプレを変えたとしても、ExcelVBAスレである限り 同じような面子が継承されるからやっぱり荒れやすいんだうなぁ。 Excelは扱えてVBAにも興味あるけど、コードを書いたり読んだりするスキルはまだいまいちの人も 集まりやすいし、その中からググレカスとか糞コードとか言って偉ぶりたいだけの口だけ番長も発生しやすい。 現存のなんでもスレの方が、範囲が広い分、様々なスキルの人が集まって風通しが良さそうだ。 敢えてExcelVBAを立てようとしなくても良いように思えた。>> 396
402 :
デフォルトの名無しさん :2013/09/09(月) 10:38:26.90
ExcelのVBAでいろんなExcelファイルから抽出・加工・編集した複数の表データなどを Wordに貼り付けるというマクロを組みたいです。 もちろん表の大きさに応じて、Wordの何ページ目のどこに貼るかというのもVBAでコードを組んで自動処理したいです。 そのために「覚えるべきこと」は何ですか? この目的に沿う「本」や「Web解説サイト」はどこですか?
下記を実行すると「型が一致しません」というエラーが出てしまいますが 理由が分かりません。 ご教示ください。 シート上のデータはすべて文字列で100×100くらいにびっしり埋まってます Dim rng As Range Dim c As Variant Set rng = Cells(1, 1).CurrentRegion.Columns(2).Offset(1, 0) For Each c In rng MsgBox c.Value Next c
405 :
デフォルトの名無しさん :2013/09/09(月) 11:21:17.57
cがセルではなく列になっているからだ。
406 :
デフォルトの名無しさん :2013/09/09(月) 11:24:25.04
例えばこうしたまえ Sub test() Dim rng As Range Dim c As Variant Set rng = Cells(1, 1).CurrentRegion.Columns(2).Offset(1, 0) rng.Select For Each c In Selection MsgBox c Next c End Sub
>>405 >>406 早速ありがとうございます!
columnsはセルの配列にはならないということでしょうか?
rng.addressを調べると"B2:B100"と出るのですが、
素人なのでこの辺りがどうもよく分かりません・・・
selectionはなるべく使いたくないんです。
実行時にシートがアクティブになっている保証がないので・・・
>>404 For Each c In rng
を
For Each c In rng.Cells
に修正してもダメなのかな?
>>404 Cells(1, 1).CurrentRegion.Columns(2).Offset(1, 0)
が何を対象としたいのかわからん
Cells(1, 1).CurrentRegion.Offset(1, 0)
で良いんじゃないのか?
win7 excel2010 ステートメント等にカーソル合わせてF1キーを押せばヘルプが表示されますよね? それで Application.GetOpenFilename(〜 で GetOpenFilenameの部分にカーソル合わせてF1を押したんだけど、 該当結果はありません ってヘルプの目次の部分に出るし、Officeのテキストボックスに入れても同じように GetOpenFilenameの検索結果はありませんでした って出てくるんでどうすればヘルプが出るようになります? 一応、コンパネのアプリケーションのアンインストールで右クリック→変更→ から機能の追加/削除ではexcelの部分は全てインストールされてることは確認し 修復→OS再起動は試したんですがかわりなしです。
知らんけどたぶんスレ違いだよ(鼻ほじりながら
>>410 おれもだけどネットで調べてるよ(鼻ほじりながら
>>413 >>414 ありがとう m(__)m。表示することが出来るようになりました
>>412 ネットで調べるのは良いんだけど、ヘルプが正しく表示されないのは気分悪いっしょ
WindowsXPsp3+Office2010です。 あるユーザーフォーム(UserForm1とします)で、 他のユーザーフォーム(Userform2とします)が起動中かどうかを確認するため、 Userform2.visibleの値をチェックするコードを作ったのですが、 これを実行すると、なぜかチェックを行った時点で、 UserForm2のUserForm_Initialize()部分に書かれたコードが勝手に実行されてしまいます。 具体的なコードとしては、 【UserForm1】 Private Sub UserForm_Initialize() If UserForm2.Visible = True Then MsgBox "UserForm1起動中" Else MsgBox "UserForm1非表示" End If End Sub 【UserForm2】 Private Sub UserForm_Initialize() MsgBox "UserForm2イニシャライズ" End Sub これでUserForm1を起動すると、"UserForm2イニシャライズ"のメッセージが出てしまいます。 ただ単にUserForm2が起動しているかどうかだけを確認したいのですが、 どのような処理を行えば良いのでしょうか? よろしくお願いします。
>>416 UserFormsをループしてUserForm2が含まれてるかどうか確認すれば良いんじゃね
自分で開いたかどうか管理して、フラグなりそのフォームへの参照なり持っとく方が良いけどな
まあ、その方法はEXCEL関係ないからよそで聞いてくれ。つか最初の方法もEXCEL関係ないっちゃ関係ないけど
418 :
デフォルトの名無しさん :2013/09/10(火) 16:31:16.42
選択してる範囲のセルで 値が重複していないもののみにつき ある処理を実行したいときはどういうコードを書きますか? 例えば50セル選択してて、半分近くが「東京都」、あと「大阪府」「北海道」「広島県」「神奈川県」「福岡県」「沖縄県」と種類は7種しかなく この7つの都道府県についてだけ各シートを作り(Add)、都道府県情報を別ブックから抽出して表示させる、みたいな。 「選択セルの中から重複していない値だけを取り出す」という部分だけでいいから、教えてケロです。
>>418 コード作成依頼なら別スレでやってくれ。
自分で何とか解決したいのなら
・選択中のセルの範囲を取得する
・重複していない値だけ取り出す
が解決できればいいんじゃね?
因みに「重複していない値だけ取り出す」はどのように考えてるのかな?
420 :
418 :2013/09/10(火) 17:08:10.39
「重複していない値だけ取り出す」は もちろん頭で考えています。
言語関係ないアルゴリズムの話だな たとえば、上から順番に見て行って、該当都道府県のシートが無ければ追加 有ればなにもしない、っていう処理を最後まで繰り返せば良い 使い捨ての処理なら俺ならこれで済ます
422 :
418 :2013/09/10(火) 17:15:58.67
こんな関数を作ってください。 引数1 セル範囲 引数2 単一セル 返り値 単一セルがセル範囲に存在する個数 そうすれば以下で解決するから。 For Each testCell in Selection If FUNCTION(Selection, testCell)=1 Then [処理] End If Next testCell
ワークシート関数にありそうな気がするが
425 :
418 :2013/09/10(火) 17:47:56.09
>>424 Countifがあるね。
でもWorksheetfunction.Countifで対処しようとしても、ちょっと動作が違うからね。
426 :
418 :2013/09/10(火) 17:48:42.60
そんなに出て行って欲しけりゃ普通に誘導すりゃいいのに 見事なひねくれっぷりだねえ
>>418 だったら、自分だったらワークシート名をキーにして↓みたいな感じにつくるかも
セル範囲の分だけループする
いまあるワークシートの枚数だけループする
セルの値と同じワークシート名があった場合はなにもしない
セルの値と同じワークシート名が見つからなかったら、ワークシートを追加してシート名をセルの値にする
いまあるワークシートの枚数だけループする
ワークシート名と県名が一致したら、都道府県別情報を別ブックから抽出してどっかにコピーする
430 :
418 :2013/09/10(火) 19:44:00.25
>>429 ワークシートは忘れてください。
具体例を出したほうがイメージしやすいと思った説明の工夫で
実際はワークシートは作らない。
「選択セルの中から重複していない値だけを取り出す」という機能だけ、どうコードに効率よく書くにはどうすればいいかが知りたい。
>>430 「選択セルの中から重複していない値だけを取り出す」処理をどうやるのか考えがあるんでしょ。
それをコードに書き出せばいいんじゃないの?
コードで分からないことがあるんだったらどういう部分が分からないのか質問すればいい。
>>430 忘れて欲しい例えなんか書くなよ
あんまりスマートじゃない方法だったら思いつくんだけどなぁ
433 :
418 :2013/09/10(火) 20:14:44.53
ちょっと時間がないんで概略だけ セルの値を変数に格納 セルの値をいったんクリアしとく Findで選択範囲に変数と同じ値があるか判定(ないならNothing) セルに変数値を入れてもとに戻しておく If FUNCTION(Selection, testCell)=Nothing Then みたいな感じでどうにかならないか
435 :
418 :2013/09/10(火) 20:43:06.37
>>434 嗚呼素晴らしい哉!
いったんクリアでそれが単一の値か調べるのですか。
ちょっとまわりくどいけどその部分は関数にすればすっきりとしたコードになりますね。
元のデータを弄っちゃうのは危険な臭いがする。 クリア直後にエラーが発生したら元のデータが無くなる可能性があるんだけど。 別シートにコピーして操作したほうが安全。
ディクショナリ使って処理した都道府県格納して行くのが妥当だけど 問題はVBAにディクショナリが無いw スクリプティングの使うか、コレクションで自作するか、ワークシート使うか、配列で頑張るか
CreateObject("Scripting.Dictionary") じゃダメなのか
このスレじゃダメだね 完全にスレ違いだ
と、無知が申しております
441 :
デフォルトの名無しさん :2013/09/11(水) 13:02:34.45
>>418 関数にしないといけないのかな、
If FUNCTION(Selection, testCell)=1 Then を
If WorksheetFunction.CountIf(Selection, testCell) = 1 Then
じゃいけないのかな?
>>425 での ”ちょっと動作が違う”のはどこら辺。
442 :
418 :2013/09/11(水) 13:27:09.72
>>441 それだと1個しか存在しない県(マイナーな青森県みたいな)だけ処理することになり
東京都とかSelection内に複数ある都道府県は処理を行わなくなってしまう。
443 :
デフォルトの名無しさん :2013/09/11(水) 13:43:12.44
>>418 「選択セルの中から重複していない値だけを取り出す」のが問題だったのでは。
追加の処理として「複数ある値」の時も処理をするなら、
もう一つ if文を追加して、個数が0より大きい時の処理を付け加えては。
444 :
デフォルトの名無しさん :2013/09/11(水) 13:44:19.09
>>422 の
× 返り値 単一セルがセル範囲に存在する個数
○ 返り値 単一セルがそれまでのセル範囲に存在する個数
445 :
418 :2013/09/11(水) 13:48:09.26
>>422 は訂正だ。
引数 データ(DB用語でいうレコード)たくさん
返り値 そのうち重複しないデータ
446 :
418 :2013/09/11(水) 14:00:19.20
世紀の大発見をした。 For Each testCell in Selection If WorksheetFunction.CountIf(Selection, testCell) > 1 Then testCell="" Else [処理] End If Next testCell これで完成だ。
447 :
418 :2013/09/11(水) 14:05:49.80
われながら天才だ。これで東大に合格だ。
Excel2007以降には「重複の除去」って機能があるんだけど ここのみなさんは未だに2003以前をお使いなんですか
うちは2002だからRemoveDuplicatesなんて邪道だ
その手のExcelの一見便利そうな機能はすぐ罠にハマるからきらいだ
頭の固くなったジジイみたいな事やめなさい
罠とか言うならそもそもExcelを使うのが間違い
人生なんて罠だらけだぞ 今すぐ自殺した方が安全
未だに2003以前を使っている奴は間違いなく頭の固くなったジジイ
456 :
デフォルトの名無しさん :2013/09/11(水) 20:15:03.66
Yahooプロ野球のネット中継を見てたんですが 巨人の阿部が2ランホームランを打って4-1になったと思いきや そのあとまるでホームランがなかったように2-1に戻ってるんですが なにかあったのですか?
457 :
デフォルトの名無しさん :2013/09/11(水) 20:29:09.59
>>455 最新機能が本当に必要かどうか判断することを放棄してゲイツの奴隷になれというわけですね
ホント頭かてえのな
えてしてこのスレはObject指向に付いて行けない俺みたいなじじいと PG初心者のたまり場だから仕方がない。
マイクロソフトの話でゲイツがどうのこうのって言う奴がまだいるのに驚いたわ ここは時間が止まってるんだなあ
>>461 object指向理解できたらVBAのコーディングもはかどるだろうか?
まったくわからないけど...
ネタ、釣り、皮肉にマジレスするのがここでのマナー
クラスモジュールに何かコードを(自分で一から)書いたことがない。 本で紹介されていたソースをコピーして使ってはいるけどw
基本コピペ改変でなんとかなっちゃうよね、PCのスペックも上がってるし、ネット全盛期だから気軽に出来ちゃうけど、昔のPGはほとんど本で調べて手書きだったのかな、そう考えると凄いな.....
質問です。 Gの列に英数6桁の文字列があります。(例:123ABC) それらの末尾に半角アスタリスクを付け加えたいのです。(例:123ABC*) Range("G:G").Value = Range("G:G") & "*" と書いて実行してみましたが、 ワイルドカードの*と認識されてしまうらしく、作動しません。 エラーメッセージは「型が一致しません」と表示されます。 「ワイルドカード エスケープ」でぐぐってみましたがわかりませんでした。 どなたかアドバイス願います。
Range("G:G").Value = Range("G:G") & "~*" 書いてみた式がコピペでうまく表示されていませんでしたので訂正します。 アスタリスクの前に半角で 〜や¥を試してみましたが上手くいきませんでした。
>>467 いや、そのコードを手書きしている意味が分からない。
8桁区切りはまぁ、区切りがいいから理解出来るが、
幾ら昔でもアセンブラや逆アセンブラは有ったし、無ければ自分で作ってた。
まだ横に有るのがアセンブラコードをダンプ化したものやチェックサムならともかく、NEXTってなんだよ。
スレ違いとは分かっていても凄く気になる。
Cells(1, 1) = Cells(1, 1) & "*" でやれば正常に処理できた ループは不可?
>>471 Cells だとできるんですね。
Range だからできないのか、ループだからできないのか、わかりませんが実験してみます。
ちなみに下記の式でループもでき、解決しました。
ありがとうございます。
Range("G:G").NumberFormatLocal = "@""*"""
行全体を("G:G")で選ぶんじゃなくて、セル単体を("G1")で選べば、RANGE でもできました。 ループもできました。 勉強になりました。
>>470 本当の最初はアセンブラがなかったんだよ
その時代の資料がネットでは発見できなかったけど、自分で暗算して16進数に直した物を入力してた
だから、16進コードを書くための用紙が売られてた
その次に、アセンブラは作られたけど、まだテキストエディタのない時代があった
475 :
デフォルトの名無しさん :2013/09/14(土) 22:14:02.85
>>472 Formatを使って、123ABC が 123ABC* と表示されていても、実体は?
MsgBox で確認するべし。
476 :
466 :2013/09/14(土) 22:14:44.05
>>467 おおっ、そんなノートがあったのですね!
アセンブラ見てるとVBAて読みやすいなって思えるw
>>472 >>475 formatでもしダメなら、これでどうかな?
Dim str As String
Dim c As Long
For c = 1 To Cells(Rows.Count, 7).End(xlUp).Row
str = Cells(c, 7).Value
str = str +"*"
Cells(c, 7).Value = str
Next c
End Sub
頭のsub が抜けてた sub テスト Dim str As String Dim c As Long For c = 1 To Cells(Rows.Count, 7).End(xlUp).Row str = Cells(c, 7).Value str = str +"*" Cells(c, 7).Value = str Next c End Sub
479 :
デフォルトの名無しさん :2013/09/14(土) 22:50:17.70
>>474 JR(NZ) とかでループするときにオペランドの値を数えるときに
FF
FE
FD
FC
FB
FA
F9
F8
...
って数えていくんだよな
>>470 大昔は、PC はおろか端末さえも一人一台じゃなかったから、いくらアセンブラーとかあってもどうしようもなかった。
481 :
デフォルトの名無しさん :2013/09/14(土) 23:14:32.00
>>480 確かに、アセンブラーなんてのは理想の高級言語だった。
1命令づつ、トグルスイッチで入力してたね。
いい感じで雑談スレになってるなー
>>1 ★5厨が来たらビックリして小便漏らすんじゃないか?
じゃ、そっちでは何が低級言語だったんだ?
Excelの話もまともにできないのがバレたので仕方なく昔話を始めた模様
>>477 FORMAT だと見た目だけでしたね・・・・
文字列2つをくっつけるだけでこんなに色々やり方があるとは勉強になりました。
結局はシンプルな
Cells(1, 1) = Cells(1, 1) & "*"
をループする方法を採用しました。
ありがとうございます。
>>483 荒らしてドヤ顔。
工作員がやりそうなことだな。
みんなマターリしようよ(゚Д゚)
3×1の2次元配列をtransposeしても行列が入れ替わらなくて困ってます。 例えばこんな感じ↓にしても、2つのListboxのいずれにも、3×1のデータが表示されてしまいます。 これって仕様でしょうか? (わざわざ2次元にしてるのは、場合によっては、3×2や3×3になることがあるからです) Private Sub UserForm_Initialize() Dim myData() As Variant ReDim myData(2, 0) myData(0, 0) = "a" myData(1, 0) = "b" myData(2, 0) = "c" With UserForm1.ListBox1 .List = myData .ColumnCount = 3 End With With UserForm1.ListBox2 .List = WorksheetFunction.Transpose(myData) .ColumnCount = 3 End With End Sub
>>489 myDataにデータを格納するんじゃなくてワークシートにデータを格納してもダメなの?
質問に質問で返すスレだった
493 :
デフォルトの名無しさん :2013/09/15(日) 12:34:46.65
>>489 ReDim myData(2, 0) −> ReDim myData(2, 1)で出来る。
添え字0の配列が無駄になると考えるなら、Option Base で変更。
その時は ReDim myData(3, 1)で、添え字の範囲も、(1〜3と1)に。
>>489 ,493
なんだろうね、これ
要素数1の配列は、配列じゃないって判定うけるのかね
しかもOption Base 0 指定しても、無視して添字1からの配列つくりやがるっぽい
行数と列数同じ配列にして、自前で入れ替える処理書くのが無難なんじゃね
皆さんありがとうございます。
>>491 ある意味一番確実かも・・・最後はそれでやってみます
>>493 要素数増やすとうまくいきますね
ただ、リストボックスに空のリストができてしまうのが難点です
>>494 そうそう、変ですよねVBAの配列って
配列は本来固定サイズで最大値をあらかじめアロケートするための方法 要素数1個の配列作る奴の方が変だが リストボックスに表示するために行列変換するのもなんだかな、って感じだが ちなみに変なのはワークシート関数の仕様であって、つまりEXCELが変。VBAが変なわけではない
論点ずらした文句ばっかり
>>496 作り手の問題という視点がすっぽり抜けてる。
大抵の場合ほとんどが作り手の問題なんだけどな。
自分は悪くないってどこぞの人間と同じ。
VBAの配列がクソなのは事実 redim preserve(笑)とか 2次元以上の配列だと1つの次元しか拡張できないし色々酷い
500 :
デフォルトの名無しさん :2013/09/16(月) 11:30:55.59
そうだね
色々と作りなおしているうちに使わなくなったプロシジャやら関数やら出てきたりすると思うんですが、 そういうのを検出する工夫とかって無いでしょうかね。 仕様をきちんと整備していたらそういう事もないんでしょうが、あれこれ作っているとどうしても出てきてしまいます^^;
使わなくする時にコメントアウトするかな。 検出は名前を変えてコンパイルしてみるとか?
504 :
501 :2013/09/16(月) 23:07:33.57
>>503 w VBAProjectというものを操作する…ということなんですかね。難しそうだけどもしそういうのが出来たら
後々重宝しそうではありますね。今の俺のレベルではまだ無理みたいですが^^;
>>502 地道にそうやるのが良いかな…
他にはみなさん、どうしておられます?
そのうち使うかもしれないし 放置しととけばいいんじゃないの 特に支障ないでしょ
507 :
501 :2013/09/16(月) 23:27:04.96
>>505 へぇそういうのもあるんだ。
試しに後で使ってみます。教えていただきありがとうございます。
v=WorksheetFunction.Sum(cells(Ny,x):cells(y-2,x)) こんな感じで使いたいのですが構文エラーになります セルで指定する方法がありましたら教えてください
>>508 v = WorksheetFunction.Sum(Range(Cells(Ny, x), Cells(y - 2, x)))
できました。ありがとう。
>>501 部品は最初から用途別にモジュール、またはクラスに纏めて作っておく。
要らない関数を消すんじゃ無くて、使う関数が入ってるモジュールやクラスを組み込むんだ。
IF セルA.value mod セルB.value = 2 then と書いて セルA=7 セルB=2.5 にして実行すると modの結果が1になってしまい、IFの中に入れません イミディエイトウィンドウで直接以下の式を実行しても結果は1になりました。 ? 7 mod 2.5 1 なぜでしょうか? 対処方法を教えてください
513 :
デフォルトの名無しさん :2013/09/21(土) 20:03:16.33
>>512 IF (セルA.value)*10 mod (セルB.value)*10 = 20 then
でどうかな?
>>513 ありがとうございます
やはりそれしかないですか・・・
なんでこうなってしまうのでしょうか?
エクセルのセル上でmod関数使うとちゃんと2になってくれるのに
515 :
デフォルトの名無しさん :2013/09/21(土) 20:29:11.96
>>514 VBAのヘルプで見ると
「いずれかの数値が浮動小数点数の場合は、整数に丸められます。
MyResult = 12 Mod 4.3 ' 0 を返します。
MyResult = 12.6 Mod 5 ' 3 を返します。」
とあるので、VBAでは
12 Mod 4.3 は INT(12) Mod INT(4.3)
12.6 Mod 5 は INT(12.6) Mod INT(5) と同じになると思われます。
516 :
デフォルトの名無しさん :2013/09/21(土) 20:33:32.10
515です INT は間違いでした、ROUND(12.6,0) が正しい。
そうなんですか・・・ クソですね ありがとうございました
そうですね。あなたクソですね。
このスレは糞まみれですね。分かります。
いいえ、あなたは分かっていません。 このスレはクソそのものです。
つまりVBAはクソ言語
522 :
ピラフ :2013/09/22(日) 09:30:02.83
>>521 VBAがクソ言語じゃないことをピラフが証明してみせるよ!はい証明終了!!
Function Pilafu_Mid(a, b)
Pilafu_Mid = a - Fix(a / b) * b
End Function
もしマイクロソフトの中の人とお知り合いの人がいたら世界最大のインターネットコミュニティで
ピラフがVBAの普及に尽力されてたってお伝えいただけない?ピラフにMS Officeを無料で進呈すべき
だって進言してくださらないでしょうか。よろしくお願いします。ありがとうございます。
今日は上機嫌だな。 生理が終わったのか。
ストーップ!!!
>>522 なんでModじゃなくてMidなの?
あと青い肌のあいつは "Pilaf"
526 :
ピラフ :2013/09/22(日) 13:34:25.91
>>525 Modは正しくはRemainderなんだからRemなんだけど、
Remはコメントのためにリザーブされてるでしょ、だから
ほんとはRemなのにModになってるわけで、ピラフがModをMidと書いたのはそれと
少しも関係ないんだけど、書き間違えたの。ピラフ書き間違えたの。とにかくピラフが
言いたいのはピラフが書き間違えたってことなの。でも熱意は伝わってるっしょ。じゃあそれでいいです。
ちゃんと間違いを認められるピラフさん素敵
雲行きが怪しくなってきた
>>522 それワークシート関数のMODと互換じゃないから
MOD(7,-2.5)と比べてみろ
ちゃんとワークシート関数の説明に MOD(n, d) = n - d*INT(n/d) だって書いてあるのに、なんでわざわざ改悪するかな
530 :
ピラフ :2013/09/22(日) 17:40:09.33
>>529 ワークシート関数と互換だと言った覚えはないよ。
Modと互換だと仮定すればピラフが言ってることは間違いになる。
そうすればピラフのコードの瑕疵を指摘した自分は賢く思われる。
俺カッコいい。そういうことでしょ。だっせえやつ。お前大学出てないだろ。
531 :
ピラフ :2013/09/22(日) 17:43:05.73
>>529 最近こういう詭弁使って無理矢理自分を賢く見せようとする雑魚が増えたよな。
低学歴自慢にしかなってないことにいつごろお気づきになるのだろうか。
最低でもMarchぐらい卒業してないと話にならんな。ピラフはアメリカのケンブリッジを卒業したけどね。
首席に近かったんじゃないかな。別にピラフそういうの気にしてなかったから見なかったけどね。
ほとんど首席だった。
まぁアメリカのケンブリッジでも中国のケンブリッジでもどこでもいいよ w
533 :
デフォルトの名無しさん :2013/09/22(日) 19:06:45.23
>>529 VBAの話じゃ無いけど、流れで。
MSは「n - d*INT(n/d)」を理想として設計してるが、
エクセル関数のMODは上記式とは完全一致しない。
エクセルの表計算は2進数での計算の為、2進化10進数ではない。
そのため、
=MOD(12,0.1)の様な小数点の数字が有る時は、変換誤差が出る為注意が必要。
VBAについては、既出の通りだが、
ワークシート関数でも小数点は要注意と思う。
>>527 最近こういう自演使って無理矢理自分を賢く見せようとする雑魚が増えたよな。
>>529 もともと小数が絡まなくても MOD(70,-25) は -5、70 mod -25 は 20 という違いがある
Pilafu_Midは後者と同様ってだけで、改悪とかそういう話じゃない
ピラフって桃白白なの?
えっ・・・何を今さら
あっ.....
>>353 VBAのmodの仕様がワークシート関数と違うから使えねぇって話なのに
VBAのmod互換の物をつくって、一体何がしたいの?
>>539 お前、何から何まで間違ってるな
逆に感心するわ
CEILING FLOOR ROUNDDOWN ROUNDUP お好きに組み合わせれば
542 :
デフォルトの名無しさん :2013/09/25(水) 10:57:41.90
プログラムの経験は少しありますがVBAは初めてです。 作りたいのは作業日報のようなものです。 入力フォームに入力された内容を別のBookに保存します。 Rangeとかは理解できてきましたが、大きな問題を抱えています。 フォームの登録ボタンを押下時には シートを新しく作成してそこに書き込むようにしたいのです。 そうして次々とシートを追加していくようにしたいのですが そのような事は可能なのでしょうか? OS Win7 Excelは2010です。
可能です
ありがとうございます。 検索しても出てこなかったもので困っていました。 出来るのであればもう少し調べてみます。
545 :
542 :2013/09/25(水) 12:17:23.60
お陰様でなんとかなりそうです 入力値から取得した名前でシートを次々追加できるのを確認しました! まぁ 間違えて終了してしまって全部消えましたけど。
よくわからない部分を調べながら作る時、いっぺんリセットして最初から作り直した方が 試行錯誤の跡が消えてコードがスッキリするよな
なるほど。 このスレのテンプレの様だな。
コピーペーストに関する質問です。回答お願いします。 1000行のデータを書式などのフォーマットもコピーする際に 1000行まとめてコピーペーストする場合と1行ずつ1000回コピーペーストする場合とではファイルのサイズが後者の方が重いです。 この場合に1行ずつ1000回のコピーペーストした際のファイルサイズを軽くしたいのですが、どのようにしたらよろしいでしょうか 値のみではなく書式もコピーしたいです。よろしくお願いいたします。 環境はOS Win7 Excel2010です。
値だけ一行づつコピーして、あとから一括で書式設定するコードにしたら?(適当)
550 :
548 :2013/09/26(木) 00:35:27.43
抽象的な質問ですみませんでした 1行ずつ読み込んでコピーする理由はデータを1行ずつ判定を行い そしてその判定を元に複数のシートに仕分けを行いたいので、値と書式はセットで1行としてコピーペーストを行いたいです。
この方法で軽くなるかはわからんけど、 作業用シートに1行ずつコピーしたあと、最後にまとめてコピーし直せばどうだろう
条件付き書式を設定してあるセルをコピってない?
こちらでちょっと検証してみたけどデータ量そんなに変わらなかったよ。 同じように1000件のレコードで、ある程度フィールドもあるデータを、そのまま範囲選択でコピーするパターンと、カウンタまわして一行ずつコピーするパターンで試したけど。 4kbくらいしか違わなかった、まぁ確かに増えてるけど..
>>551 試したけど結果的には重いサイズのままでした
>>552 書式はプルダウンリストと色のついたセルと罫線が引いてあるくらいです
>>553 上記のプルダウンリストや色が入っているためか、こちらはもっと重いです。
コピーを行う前の状態でも400kbが既にあります。
ファイルサイズは、普通、大きい小さいと言うんだが
たぶん、コピー前のシートでは列単位で書式を設定してたんだろう だとしたら、同じように書式を再設定すればかなり軽くなると思う
>>548 set a = セル範囲
で、for eachじゃダメなん?
範囲名だか何だかがペーストしたセルの数だけ作成される現象があったはず サイズ大きくなるのは多分それ 解決方法はしらん。範囲名さがして消せばいいんじゃね
>>558 ありがとうございます。たぶんそれっぽいです。
探してみます。
>>548 目的に対する手段が間違ってない?
コピー&ペーストする必要性があるの?
>>560 実際の組んでたプログラムは複数のブックから読んで1つのブックに集約する目的があったが
1行ずつコピーってたら、まとめてコピーしたときよりも何倍もデータ量が増えることに気づいたからいろいろ試してた
別のブックを参照するからデータ量が増えたのかとも思ったけど同じ1つのシートでも同様の現象が起きたから質問した
別ブックを参照する条件をつけるよりも、同じブック内でも同様の現象が起きるなら
条件がシンプルなら方がいいと思って質問した
この後出しはちょっと
別に影響ないだろ
何にせよ解決のヒントが見つかるといいね、質問スレだしね。
後出しするとそれまで回答してた人の機嫌を大きく損ねるので新しい回答者待ちとなる
後出しで、今までの応答がすべて無駄になる場合とならない場合がある 今回は後者だから、これで機嫌を損ねるのは素人
なにをやっても機嫌を損ねる更年期障害の人がいつも張り付いているから、いちいち気にしない
平常運転
わかってるなら答えてやれよw
わかってたら答えてる
わからないから後出しだと言いがかりつけて質問から逃亡するいつもの一発芸だろ
>>572 事実を端的に述べてるだろ。態度はまったく問題ないと思うが。
ピラフか?
>>572 が何に対してムカついているのか意味不明。
質問者は、的外れなレスに対して事実を伝える時も
常に平身低頭で丁寧語と敬語を駆使しなければ
問題になるということなのかね。すごいね。まさかね。
このスレは回答が終わった後が本番
もう始まってた
(´Д`;)ヾ オネガイシマス ∨) オネガイシマス (( (;´Д`) ( 八) カイトウシテクダサイ 〉 〉 ヾ (´Д`;)、 コノトオリデス ノノZ乙
解決のヒントが見つかれば、流れはどうあれ質問者的には問題ないはず! 良心的な回答者に感謝しとけばおk
碌な回答してないくせに感謝しろとか言い出したぞw モンスター回答者が跋扈する酷いスレだなw
じゃあ感謝しなくておk 以降モンスター質問者が跋扈します
582 :
デフォルトの名無しさん :2013/09/28(土) 15:48:30.80
VBAでファイル名を変更したいです。フォルダ・ファイル構成は下のような感じです。 [Folder01] img001.jpg img002.jpg img003.jpg img004.jpg img005.jpg ・ ・ [Folder02] img001.jpg img002.jpg img003.jpg img004.jpg img005.jpg ・ ・ [Folder03] img001.jpg img002.jpg img003.jpg img004.jpg img005.jpg ・ ・ [Folder04] ・ ・
583 :
582 :2013/09/28(土) 15:50:41.57
何がしたいかと言うと、各フォルダのファイル名のimgXXXが、001から始まっているのですが これを前フォルダの最後のjpgファイルの番号の次の番号から、次のフォルダのjpgファイルの番号を始めたいのです。 フォルダとファイルはたくさんあります。(フォルダは50くらい、各フォルダにファイルは30くらい) どういうコードを書けばいいですか?
>>584 コード書け。リンク先に許可とってねえだろ勝手にリンク張るな。泥棒だぞ。
>>585 .∩_∩ ミ ギャーッハッハッハッ!
o/⌒(. ;´∀`)つ
と_)__つノ ☆ バンバン
質問者に質問する自由が有る様に、回答者もどんな回答をするかの自由は有る。 リンクを貼りたい奴は貼ればいいし、コードを書きたい奴は書けばいい。
>>587 リンク張られる身にもなれ!コード盗まれて知らないやつに我が物顔で書き込まれる身にもなれ!!
なんかここのスレの人には極端な人がいるな。 リンク貼るなって言ったり、コード書くなって言ったり。
>>588 じゃ、元々ウェブなんかに書かなけりゃ良いじゃん。
>>588 その盗まれたというコードを見せてくれよ
興味あるわ
>>590 リンクを張るときは許可がいるが、ホームページに書くのは自由だろ。
許可を取らずにリンク張るのって2chだけだろ。非常識な世界に閉じこもってたら
常識の世界がわからなくなる。
593 :
デフォルトの名無しさん :2013/09/28(土) 17:58:40.45
今までの討論がまったく無駄になるほどのベストアンサーが出たのぅ
>>596 ちなみにリンクに許可は不要だから、
管理者としてはリンクフリーか書かないかどっちかしかないよ
>>587 語弊がある。
質問するにはスレのルールに則った上での質問の自由があり、
回答するのもスレのルールに則った上での回答の自由があるってことだろ。
>>598 このスレのルールって何だ?
またテンプレ?
ルール大柴
ピラフ荒らすなよ
VBA初心者ですが シートごとにカーソルを左上に戻す命令を書いていますが Sub Macro1() Windows("00score.xls").Activate Worksheets("Sheet1").Select Application.Goto Reference:=Range("A1"), Scroll:=True Worksheets("Sheet2").Select Application.Goto Reference:=Range("A1"), Scroll:=True ・・・ Worksheets("Sheet10").Select Application.Goto Reference:=Range("A1"), Scroll:=True End Sub このような書き方で10シート実現できましたが 20シートに増やす場合 もっとシンプルに記述するにはどうすればいいのでしょうか?
>>603 Sub Macro1()
Windows("00score.xls").Activate
For Each ws In Worksheets ' ←これが「全シートに対して同じことを繰り返す」って意味
ws.Activate
Application.Goto Reference:=Range("A1"), Scroll:=True
Next ws
End Sub
>>604 コード書く前に質問者本人に仕様を確認したほうがいいと思う。
606 :
603 :2013/09/30(月) 02:55:39.35
>>604 これはシンプルで合理的ですね、ありがとうございました。
>>605 「俺はこう理解した。コードで言うならこうだ」ってことなんだから、問題ないよ。
コード書くときは文字コードに注意知る
シートをコピーして(2)がついて Worksheets("sheet (2)").Select これだと問題ないのですが Cells(1, 1).FormulaR1C1 = "=SUM(sheet (2)!RC3:sheet (2)!RC4)" こうするとアプリケーション定義またはオブジェクト定義のエラーとなります 解決策はありますでしょうか
自己解決しますた SUM('sheet (2)'!RC3:RC4)" アルファベット以外の記号を含む場合はクォーテーションで囲んでくださいとかなんとか・・・ お騒がせしました
教えて頂きたいことがあります。 VBA自体が初めてですのでお恥ずかしい質問になりますが ご容赦下さい。 Excelのシートに 入力フォームに入力されたデータを格納していきます。 具体的にはB5からE5に項目名が入っており そこから下に列を増やしていきます。 *項目が増えることはありません。 格納後に、シートを並び替えしたいのですがそこが出来ません。 具体的なコードは以下です。 Set rngSetRng = .Sheets("一括表示").Range(Cells(3, 5), Cells(5, lngRowNum)) rngSetRng.Sort _ Key1:=.Sheets("一括表示").Range("C5"), _ Order1:=xlAscending, _ Header:=xlYes エラー内容は 実行時エラー '1004' 並べ替えの参照が正しくありません。 並べ替えるデータ内にあることと「最優先される キー」ボックスが空白でないことを確認してください。 lngRowNum は正しく最終列の数を取得できております。 ちなみにキーに指定してる行には日付のデータが入っております。 この問題に1日費やしても解決できませんでしたので、どうかお助け下さい。
612 :
611 :2013/09/30(月) 12:34:28.09
ごめんなさい 行と列という言葉の使い方が逆になってしまいました。 No 日付 項目1 項目2 と横に並んでいて 縦方向にデータを追加していく ということです。
613 :
デフォルトの名無しさん :2013/09/30(月) 13:14:38.29
(lngRowNumの設定が無いので、仮に10行まで) With Worksheets("一括表示") Set rngSetRng = .Range(Cells(5, 2), Cells(10, 5)) rngSetRng.Sort _ Key1:=.Range("C5"), _ Order1:=xlAscending, _ Header:=xlYes End With これでどうかな。
>>611 Cellsの引数はX,YじゃなくてRow,Col
Cells(5, lngRowNum)じゃなくてCells(lngRowNum,5)だと思うが
Cellsの前に . とか .Sheets("一括表示"). とかを付けてやる必要があるんじゃ?
シート参照しなくてもCellsそのものは動く事は動く ただ、どのシート参照してるかは分かりにくい そのコードの書かれたシートかActiveSheetなはずだが
>>611-612 俺は
>>614 の言ってるとおり
> Cells(5, lngRowNum)じゃなくてCells(lngRowNum,5)だと思うが
か、キーの指定位置
Key1:=.Sheets("一括表示").Range("C5"), _
が間違っているかのどちらかかなと。
>>612 のデータのNo列がA列から始まっていると仮定すると、
キーの指定位置は"C5"じゃなくて"B3"になると思う。
618 :
611 :2013/09/30(月) 17:48:39.99
皆様短時間に多数のレスありがとうございます。
皆様が言われた通りCellsの引数が逆でした。
こんな単純なことだったとは。本当助かりました。
>>615 ,616
このコードの前に指定のシートをactiveにしています。
はじめは.Sheets("一括表示").… をすべて付けてたのですが
なぜかうまくいかなくて。
ちなみに、実際は入力された内容を別シートに随時追加していく仕様なんです
索引のような機能を追加したくて作業を進めてるところです。
>>617 タイトル行のようなものが含まれてましたので
表の始まりがA1じゃないのです。
分かりづらい記述ですみません。
619 :
デフォルトの名無しさん :2013/10/01(火) 08:31:48.38
あるフォルダ以下の階層で、あるファイル名のファイルを探して開くためのコードを教えてください。 階層は深いので4-5層くらいあります。 そのファイル名は重複はしておらず、あるとすれば1個のみですが、存在しない可能性もあります。 こんな感じではじめて Dim FolderName as Sting = "C\Data\Report\" 'これ以下の階層を探す Dim FileName as String = "20131010Data.xls" 'このファイルを探す
で、どこが分からないの?
621 :
619 :2013/10/01(火) 09:12:13.00
さっぱりわかりません。
623 :
デフォルトの名無しさん :2013/10/01(火) 09:25:13.96
>>619 あんまりきちんと検証してないけど、こんな感じ?
Sub Sample1()
FolderName = "C:\Data\Report\" 'これ以下の階層を探す
FileName = "20131010Data.xls" 'このファイルを探す
ChDir FolderName
Set WSH = CreateObject("WScript.Shell")
sCmd = """dir /s /b """"" & FileName & """"" 2> nul"""
Set wExec = WSH.Exec("%ComSpec% /c " & sCmd)
Do While wExec.Status = 0: DoEvents: Loop
Result = wExec.StdOut.ReadAll
Debug.Print Result ' 結果
End Sub
626 :
619 :2013/10/01(火) 11:08:25.15
>>625 すばらしい!
ありがとう。
できましたよ
ところで黒い画面が一瞬出てきたけど
これはほっといて問題ないですか?
勉強になるなぁ
628 :
デフォルトの名無しさん :2013/10/01(火) 11:23:35.84
このあたりはなにをしているのですか? sCmd = """dir /s /b """"" & FileName & """"" 2> nul""" Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) このへんのステートメントについて解説サイトみたいなのはありませんか?
629 :
デフォルトの名無しさん :2013/10/01(火) 11:40:28.62
>>628 上の行はファイル名を取得するための準備。ダブルクォートは念のため入れただけで、なくても動く可能性はあるけど
まあ入れといた方が安全。正直に言うとダブルクォートの位置と数はこれでいいのかちょっと自信が無い
下の行は実際に処理を開始してるところ、ここが本体と言ってもいい。ここで黒いウィンドウが開いてしまう
黒窓を回避する方法もあるけど、どっちにしろタスクバーには変なアイコンが一瞬出ちゃうから書かなかった
ウィンドウハンドルとか使わずにタスクバーのアイコンを消す方法があるなら俺が知りたいぐらい
>>625 に戻って、その次の行のStatus〜DoEventsで処理の完了を待って(完了すると黒窓が閉じる)、
最後にReadAllで結果を得る
>>628 厳密に言うと、その2行の中でVBAのステートメントはLetとSetとCallだけだから、(LetとCallは省略されてるけど)
解説サイトを見ても本当に知りたいことは書いてなさそうな気がする
632 :
デフォルトの名無しさん :2013/10/01(火) 12:32:23.27
>>628 WSHで検索すると、何なのか理解できるかも。
WSHはWindows Script Host(ウインドウズ・スクリプト・ホスト)の略。
>>629 > 日経BP社(リンク条件:当社サイトへのリンクであることを必ず明記)
URLで日経BPであることがわかるので、いちいちそんなこと書かなくてよろしい
エクセル2003のユーザーフォームのコンボボックスでマウスホイールを使用したいのですがどうプログラムすればいいでしょうか?
>>633 見てないけど、日経BP が要求してるんだろ。
アホな要求だろうが参照するなら従うべき。
>>635 二度と2chに書き込みしないでください
と俺がアホな要求をしているので従ってくださいね
>>636 にちゃんの書き込みは、にちゃんのものなので、お前のアホな要求はなんの意味もないぞ (w
変な質問になりますが聞いてもらえますか? ExcelでVBAを用いた処理を行っているのですが そのなかで、対象のセルに 「...」 という文字を入れてます。 これをVBAで実行するとセルには見た目通り 「...」 下の方に小さな点3つが表示されます。 ですが、この部分をExcel上で手作業で別セルにコピーすると 「・・・」 のように 真ん中に大きく表示されてしまいます。 なにが起こっているのでしょうか? 結果的にしたいことは ... をExcel上で同じ見た目でコピーしたいです。
>>638 オプションでオートコレクトを切る
オートコレクトの一覧にはデフォルトで「 ... → …」というのが登録されているから、
その項目だけを削除してもいいけど、ほかにも勝手に変換される記号とかたくさんあるから
一律でOFFにした方が確実
>>639 さん
ありがとうございます。
解決しました。 そういうことだったのですね。
VBAというかExcelの問題だったのに解答ありがとうございました。
どういたしまして
シート1 ボタンがある。 シート2 range(cells(row1,col1),cells(row2,col2)) ボタンに登録してあるマクロを実行するとシート2の1行単位で、ある処理をする。 シート2がアクティブな時はマクロが動くのに、シート1にあるボタンを押下してマクロが起動すると、range部分でエラーが出ます。将来的にはシート2は非表示にしたいのです。 別シートにある1行x列の書き換え処理をFor〜Nextで回すときに、Rangeを使わずに範囲指定するコードが書けるのでしょうか。 (QAサイトはセキュリティーで閲覧不可でした。)お願いします。
シート指定を省略しない シート2.range(シート2.cells(row1,col1),シート2.cells(row2,col2))
省略するのはバグの元だから、きちんとブックから指定する癖をつけておいた方がいいかと。 ブック名:book1.xls シート名:シート1 シート2 だとして Workbooks("book1").Sheets("シート2").Range(Workbooks("book1").Sheets("シート2").Cells(Row1, Col1), Workbooks("book1").Sheets("シート2").Cells(Row2, Col2)) と1行で書けるけど、可読性が悪いからWithステートメントを使うか With Workbooks("book1").Sheets("シート2") .Range(.Cells(Row1, Col1), .Cells(Row2, Col2)) End With シートオブジェクトを変数として使うか Dim objSheet2 As Sheet Set objSheet2 = Workbooks("book1").Sheets("シート2") objSheet2.Range(objSheet2.Cells(Row1, Col1), objSheet2.Cells(Row2, Col2)) シートオブジェクトを変数として、更にWithステートメントを使うと可読性が上がる。 Dim objSheet2 As Sheet Set objSheet2 = Workbooks("book1").Sheets("シート2") With objSheet2 .Range(.Cells(Row1, Col1), .Cells(Row2, Col2)) End With
シート指定だけで十分
642です。 本来cellsの前にもシートを指定しないといけないんですね。withステートメントやドットもよく調べてみます。 大変助かりました。ありがとうございます。
Withは可読性あげるものじゃないぞ 下手に使うと可読性下げる
>>647 可読性を上げるためにも使えるでしょ。
どうしてそれを否定したいの?
ABC(50文字)DEF.foo
ABC(50文字)DEF.bar
ABC(50文字)DEF.baz
より
With ABC(50文字)DEF
.foo
.bar
.baz
End With
のが圧倒的に見やすい。
シート名をハードコーディングするならオブジェクト名を直接指定した方がいい
>>648 ABC(50文字)DEF.foo
ABC(50文字)DEF.bar
ABC(50文字)DEF.baz
より
a.foo
a.bar
a.baz
のが圧倒的に見やすい。
>>648 可読性を上げる事が出来る事を否定はしてないと思うが
あれはタイプ量を下げるのが第1の目的で、その結果ソースが短くなれば読みやすくなるかもしれんが、それは副次的な話
ちなみに第2の目的はオブジェクト参照の階層を下げる事による実行速度向上な
何そのトンデモ理論
>>653 苦しい言い訳乙
て言うか、見苦しいから ROM っとけよ。
アルファベット50文字も使うぐらいなら 日本語のほうがわかりやすい
>>648 a.foo
a.bar
a.baz
より
With a
.foo
.bar
.baz
End With
のが圧倒的に見やすいか?
Withは使い方が難しい。 一見、可読性が高くなる様に見えてその範囲が広くなると何のobjectで切っているのか、分かり辛くなる事もある。 だから今のVB.Netでは名残として残っていても同じ.NetフレームワークのC#では採用されていない。 左程重要な機能として扱われていないってこったね。
それ範囲が狭ければ大丈夫ってことじゃん
>>658 別にダメだとは言ってないじゃん。
ただ使いどころを選ばないと痛い目見るだけで。
662 :
デフォルトの名無しさん :2013/10/04(金) 07:34:52.09
[戻る] [次へすすむ] [宮尾すすむ] という3つボタンを作りたいんですが、どうすればいいですか?
>>657 可読性ということからして
a.foo
はaが何を示しているのかこれを見ただけじゃ全く分からない。
一文字変数は可読性を著しく下げると思え。
上記のような比較的単純なコードなら、あっさりしているように見えるけど
objSheet2.Range(objSheet2.Cells(Row1, Col1), objSheet2.Cells(Row2, Col2))
のように複雑になってくるとobjSheet2が何度も出てきてウザくなる。
例え一文字変数だったとしても。
>>658 言っていることは分かるけど、可読性を気にしている人が関数を長く書くとは思えない。
>>660 使うときはどういうものを使うのか統一しないとぐちゃぐちゃになって
かえって可読性を悪くするから気をつけなければいけない。
664 :
デフォルトの名無しさん :2013/10/04(金) 07:47:42.80
UsedRange内のセルをすべてチェックして セルが日付のシリアル値なら 土曜なら水色、日曜ならオレンジのようにInteriorColorをつけるには どうすればいいですかしらん?
665 :
デフォルトの名無しさん :2013/10/04(金) 09:06:40.24
変数渡しの「値渡し」「参照渡し」、普通はどっち使いますか?
667 :
665 :2013/10/04(金) 10:04:57.41
>>664 日付かどうか区別するのって実は意外と面倒
とりあえず不完全なサンプル
For Each c In ActiveSheet.UsedRange
If InStr(c.NumberFormatLocal, "d") Then '日付かどうか
If Int(c) Mod 7 = 0 Then c.Interior.ColorIndex = 28 '土曜=水色
If Int(c) Mod 7 = 1 Then c.Interior.ColorIndex = 44 '日曜=オレンジ
End If
Next
>>667 引数の渡し方を指定しない場合はByRef(参照渡し)になる。
なので、ByRefが普通。
>>668 不完全というより全然ダメダメだろ。
日付の判断ならIsDate
曜日の取得ならWeekday
曜日で判断するなら
vbSunday
vbMonday
vbTuesday
vbWednesday
vbThursday
vbFriday
vbSaturday
くらい使え。こんな糞コードだったら書くなというレベル。
>>670 省略はバグの温床。
きちんと値渡しなのか参照渡しなのか明示しないと
引数の値をを変更しちゃいけないのに変更してしまうといったバグを引き起こす。
>>671 言語仕様としての「普通」が何かって話だよ。
673 :
細川たかし :2013/10/04(金) 12:24:31.16
>>665 はデフォルト値の話をしてるわけじゃないと思うんだけど・・・
とりあえず、ご存じかもしれませんが、ByValって指定しないと、デフォルトでは参照渡しになります。
その上でどっちを通常用いるかと言えば、必要な時に適切に使い分けます。
引数の中身を変更しちゃマズい場合は、値渡しをすることもありますし、
そもそも引数の中身を変更しないようにコーディングできるのであれば、
わざわざ値渡しにする必要もありません。
将来の拡張や改修やらを考えて値渡しにしておいた方がいいと思ったときは、
あらかじめ値渡しにしておくことも場合によってはあります。
蛇足ですが、そういったことも考えれば、ByRef/ByValは常に明記しておけば、
後から見ても理解しやすいし、他の人がコードを見たときにも分かりやすいです。
675 :
665 :2013/10/04(金) 12:37:08.92
676 :
665 :2013/10/04(金) 12:40:06.38
>>674 ありがとうございます。
言語間でデフォルト設定が違うことがあるから明示するべきということですね。
あとプログラマ的には参照設定を使うほうがいろんな観点でスマートということでしょうか?
スコープで言えばなるべく狭くしたほうがメンテナンス性においてスマートであるのと同様に。
677 :
デフォルトの名無しさん :2013/10/04(金) 12:43:01.72
>>671 そんな関数や、そんなvb定数があったのですか!
ところでVBAのコードを書いてるとき、関数一覧や組み込み定数一覧を見れる機能みたいなのは
ALT+F11のエディタのどこかにありますか?
F2だっけか
>>676 簡単に説明しますと、値渡しはそのスコープ内に引数のデータをコピーしますので、必要もなく値をコピーしてメモリを圧迫することもない、ということですね。
もちろん、メンテナンス性もあります。
また蛇足ですが、VBAの場合、「参照設定」という言葉は全く別の物事を指しまして、
これは簡単にいうとVBAの機能拡張の設定のことです。
こちらはまた別の話になりますので、興味があれば是非調べてみて下さい。
相変わらずレベルの低い奴が威張ってるな
>>675 -50点
値渡しと参照渡しをそこまでしか理解してない雑魚が
人に点数付けるとかもっての他。
死んで詫びるレベル。
>>682 Application.Top = 100
Application.Left = 200
Application.Width = 500
Application.Height = 700
>>671 オメーもダメダメだよ
> 日付の判断ならIsDate
元の要件はシリアル値かどうかだから、Variant で受けて VarType( ) で判断しないとダメだろ。
セルの範囲指定で最初はC4で最後はS2の値だけ右に移動したセルを指定したい場合はどうするばいいのでしょうか?
Range("C4").Resize(,Range("S2").value+1)
ResizeじゃなくてOffsetじゃないのかと
いや、
>>687 をFor Eachで回せってことか
範囲指定って言ってるんだからResizeで合ってる Offsetだと単一セルになってしまう
>>690 仕様が分からなければ質問者に聞けばいいだけのこと。
小学生にだってわかるぞ、って小学生に失礼か。
「最初はC4で最後はS2の値だけ右に移動したセルを指定したい」
セル範囲を指定したいということなので
>>687 で正解でしょ。
Range("C4").Resize(,Range("S2").Value+1).Select
いや、よく読んでみると、 最初指定しているセル範囲は1セルで、その後範囲の変更ではなく移動と書いてある。
元の質問者に説明してもらわん事には何とも判断つかん
最後はってあるから、単一セルを順次処理したいのかもしれん
それだったら
>>689 、範囲なら
>>687 、単一セルなら
>>688 あ、もうどうでもいいかw
「セルを指定したい」とちゃんと書いてあるのに、なんで範囲の話がでてくるんだ?
>>697 だね。
この時点で2つの見方が出てきてるわけだから、素直に質問者に聞けばいい。
質問者に聞けば答えがすぐ出るのに聞かずに自分の主張を通すっていうのは
質問者と回答者が同一人物、或いは質問者と回答者がグルになってるという疑いが出てくる。
何でそこまでして書き込む必要があるのか?
やっぱ金貰ってんだろうなぁ。
>>697 「セルの範囲指定で」って書いてあるからだろ
まぁ1セルでも範囲は範囲だけどな
701 :
デフォルトの名無しさん :2013/10/06(日) 12:03:37.96
>698 の「質問者と回答者が同一人物」に同意
┌─────────┐ │ .| │ キチガイ警報! │ │ .| └―――──――――┘ ヽ(´ー`)ノ ( へ) く |\ ┌──────────┘- \ │ 気の触れた方が \ │ / └──────────┐- / ヽ(´ー`).ノ |/ ( へ) く - = ≡三 |\ - = ≡三 ┌──────────┘- \ _ = ≡三 │ \  ̄ = ≡三 │ いらっしゃいます / - = ≡三 └──────────┐- / (´ー`) - = ≡三 |/ ( ヽ ヽ) / >
例えば シート1の3つのセルの値と シート2の3つのセルの値がすべて同じかどうかを調べる時 Searchを使うのとifを使うのと、どちらが良いでしょうか?
>>704 初心者の方ですか?
Ifというのは条件分岐を行う構文です。
Ifを使うことで値を比較することができるんです。
比較なら「EXACT」という数式もありますよ
helpから Search メソッドおよび SearchB メソッドは、指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を 左端から数え、その番号を返します 重要 Search メソッドは、1 バイト文字セット (SBCS) を使う言語での使用を意図したもので、SearchB メソッドは、2 バイト文字 セット (DBCS) を使う言語での使用を意図したものです。 Search って検索でしょ?判断はどちらにしろIfを使わんとダメなんじゃ?というかIfの中でSearchを使うんでしょ? どちらがいいかとかいう問題じゃないと思うけど
709 :
703 :2013/10/06(日) 21:28:41.30
スイマセン説明不足だったみたいで・・・ ifで回すとループが入ります Searchでネストにしたほうが良いのだろうか でもどのみちifは使うから、それならifでいいじゃないだろうか そんな疑問が自分の中で解決しなくて こういったケースでは処理や見た目的にどちがら使われるのか お聞きしたかったのです
>>697 申し訳ないけど、If と Search のそれぞれのコード貼ってくれないかな。
711 :
デフォルトの名無しさん :2013/10/06(日) 21:52:36.34
>>709 へ質問
@「3つのセル」の位置は、シート1・シート2でそれぞれ固定?、
それとも、どちらかのセル位置は不特定?
不特定ならば、範囲は決まっている?
A「値がすべて同じかどうかを調べる時」とは、
「セル.Valueが同一である時」と思って良いのかな?
712 :
710 :2013/10/06(日) 22:04:44.20
>>709 >ifで回すとループが入ります
>Searchでネストにしたほうが良いのだろうか
Ifでネストしても良いんだが?たかだが三つだろ
まあ、決まった場所の同一比較なら俺ならSearchなんて使わんが
Searchってのは文字通り場所を探すためのもんだろ
714 :
703 :2013/10/06(日) 22:47:02.67
>>710 これから作るのでないです
>>711 @それぞれ固定です
A順番が違う場合もあります
シート1 A1、1 B1、2 C1、3
シート2 A1、3 B1、2 C1、1
といった具合にです。全部一致しない場合もあります。
>>713 Searchじゃダメですか
色々と考えてみましたがifだけだと無理?
countifとifを組み合わせる方法はどうでしょう
715 :
710 :2013/10/06(日) 22:52:06.50
>>714 > これから作るのでないです
イメージもないんか?
>>703 例えを書くなら具体的に書いてくれないか?
717 :
デフォルトの名無しさん :2013/10/06(日) 23:03:01.25
>>714 だからSearchはあくまでも「検索」するためのもので、「比較」するためのものじゃないでしょ。
で、countif?ここはVBAのスレだけど?
>>703 searchかifの二択か
ならifにしとけば間違いない
関数が手っ取り早いけどVBAじゃないとだめなの?
チェックボックスについて、教えて下さい。 プロパティにグループネームをつけることが出来ますが、 このグループネーム別にチェックのオンオフは出来るのでしょうか? 色々検索してみましたが、グループネームで選択するようなコードが見つかりませんでした。 今は1つ1つvalueでオンオフを切り替えるコードで書いてますが、 これだとチェックボックスが増えた時や減った時に コードを毎回書き直さなければいけなくなるので… Excelのバージョは2010でOSは7です。 Excelは関数についてはそれなりに使いこなせる自信がありますが VBAは最近覚えたばかりです。 よろしくお願いします。
GroupBoxの子にすれば自動的に子同士で排他掛かるけどそういうことじゃなく? UI的に排他関係にあるチェックボックスはGroupBoxで囲うのがWindowsの流儀だし、 ユーザー視点でもそれが期待した動作だと思うんだけどそれを捻じ曲げる必要があるということですか?
こういうことか? Private Sub CommandButton1_Click() Call CheckClear(Me, "Group1") End Sub Sub CheckClear(f As UserForm, gname As String) Dim c As Control For Each c In f.Controls If TypeName(c) = "CheckBox" Then If c.GroupName = gname Then c.Value = False End If End If Next End Sub
>>722 ありがとうございます。
初めて見るコードなので今から解読しながら試してみます。
>>723 ラジオボタンではなく、チェックボックスです。
チェックリストを作っていて
項目ごとにある複数個のチェックボックスを一気に(項目ごとに)リセットしたいのです。
725 :
686 :2013/10/07(月) 10:26:03.26
>>687 おかげ様で何とか出来ました。
意図が伝わらず大変申し訳ございません。
C2を起点にS4の値だけ列を選択したかったのです。S4=16であればC2からC18までを選択したかったのです。
マクロだと("C2:C18")になり、手が思いついませんでした。
問題の記述がおかしいとの指摘、ありがとうございます。
>>721 ごめんなさい、見落していました。
返信ありがとうございます。
グループボックスで囲むというのはラジオボタンという認識がありました。
チェックボックスで使う事を考えていませんでしたのでこちらも試してみます。
722さんのと合わせて試してみます。
また報告します。
727 :
デフォルトの名無しさん :2013/10/07(月) 12:51:41.59
>>703 >>714 Sub test3()
Dim sh1(3) As Boolean
'Dim sh1_to_2(3) As String 'シート2の対応セル位置を利用する時、各コメントを解除。
With Worksheets("シート1")
For sh1_c = 1 To 3
If .Cells(1, sh1_c).Value = Worksheets("シート2").Cells(1, 1).Value Then
sh1(sh1_c) = True
' sh1_to_2(sh1_c) = "sh2の" & "A1"
ElseIf .Cells(1, sh1_c).Value = Worksheets("シート2").Cells(1, 2).Value Then
sh1(sh1_c) = True
' sh1_to_2(sh1_c) = "sh2の" & "B1"
ElseIf .Cells(1, sh1_c).Value = Worksheets("シート2").Cells(1, 3).Value Then
sh1(sh1_c) = True
' sh1_to_2(sh1_c) = "sh2の" & "C1"
End If
Next
'.Cells(3, 1).Value = sh1_to_2(1) 'シート2の対応セル位置を記録
'.Cells(3, 2).Value = sh1_to_2(2)
'.Cells(3, 3).Value = sh1_to_2(3)
End With
If sh1(1) = True And sh1(2) = True And sh1(3) = True Then
MsgBox "all match"
Else
MsgBox "No match"
End If
End Sub
シート1の、3つのセル分だけif文を繰り返せば、if分だけでも可能、しかし非効率。セル数が多いなら、一度合致したシート2のセルを比較対象から外す方法も有るでしょう、
今回は、セル数が少ないのでシート2の全セルと比較。またシート2のセルもFor〜Nextで回せば、IF文は1回で済む。
推こうしてないから、無駄有り、考え方の一つとして。きっと他の人からもっと良いのが出るでしょう。
>>727 range使えよ。
function compareRange(range1, range2) as boolean
if range1.offset(0, 0).value = range2.offset(0, 0).value then ' 的なコード
' 関数にすれば、違ったら即falseで抜けられる
end sub
result = compareRange(worksheets("シート1").cells(1, 1), worksheets("シート2").cells(1, 1))
みたいな感じで。
>>728 実引数を範囲で指定する方が好き。
compareRange(worksheet("Sheet1").range("A1:A3"), worksheet("Sheet2").range('"A1:A3"))
730 :
710 :2013/10/07(月) 15:05:26.62
糞コードを晒しあったり、叩きあったりするスレじゃないんだよ。
>>730 めんどくせ。
function compareRange(byref range1 as range, byref range2 as range) as boolean
>>733 スレのルールを守れないヤツと同類になりたくないね。
>>734 は?
コードを書いてはいけませんなんてルール、いつからできたんだ?
まだ、コードに対してなにかコメントしたら「叩いてる」とか思う奴いるのか。
桃白白のときも、単なる「糞コード乙」以外の有用なコメントが沢山あったのに、桃白白自身が 叩かれた、叩かれたと騒いだから話が大きくなっただけで。
>>735 あれだけ叩かれてスレのルールを理解しようともしないっていうのは問題あると思うな。
いい加減さ、スレのルールさえ守れないやつがコード書いても、所詮糞コードにしかならないからw
論理破綻
プログラム板なんだから、コードで語り合おうぜ
>>740 は?質問スレなんだが。
コードで語りたいのなら別スレ立てろって何度言えば分かるんだ?
コードで語り合おうぜって言っておきながらコードで語ってないしw
>>741 > コードで語りたいのなら別スレ立てろって何度言えば分かるんだ?
いや、お前に言われる筋合いないんだけど。
>>741 コードを書いてはいけませんなんてルール、いつからできたんだ?
つか、お前コード書けないんじゃないの?
ここは高度なコードスレですね
行動あるのみ
>>743 いつできたかは過去ログ見れば分かるだろ。
>>1 ★5を理解しようともしないんだから困ったもんだ。
どこをどう曲解したら
>>1 ★5がコード書いては行けませんって解釈になるのか
クレクレはスルーしろと解釈するべきルールが無視されてるのが問題ですはき
>>1 ★5は
>>356 でも言われているようにクレクレ君対策。
> ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
ってことで、回答者はヒントを回答すればいいだけ。
コードを書く奴は質問者のやりとりを無視して、ヒントではなくいきなり答えを書いている。
こういうことが続くと何も言わなくても答えが貰えるということになり、
こういうコードが欲しいという依頼が来るようになるし、実際依頼が来ている。
いきなりコードで回答するという対応は結果的にクレクレ君を容認することになる。
ということでいきなりコードで回答するのは問題。
条件を付けてコードを書くなっていうと、その条件を変な解釈をして
いきなりコードで回答するやつが出てくるだろうから
コードは書くな
という解釈で充分だと思う。
コードを書かなくて困ることもないだろうしね。
>>751 クレクレ君を容認する方向でどうかお考えいただけないだろうか。
>>752 絶対ダメ。
質問スレじゃなくなるだろ。
>>753 実装方法を知ることできるでしょう。
りっぱな質問スレですよ。
>>755 別の話ではありませんよね。Excel VBA質問スレですし。
どうして別の話だと思うんですか?
また
>>1 ★5厨か。
そいつは前々スレで
>>1 ★5についてどうするか住人が話し合っている最中に
勝手にスレ立てたキチガイだからほっといていいよ。
>>757 なにをですか?大きいとなにかいけませんか?
>>759 ようはクレクレ君対策にならないってこと。
そもそもクレクレ君対策っていうのを理解してないのか?
>>760 ええ、ですからそのクレクレ君を容認する方向では
どうしていけないのか理由を尋ねていました。
まだよくわかりません。
質問スレではなくなるからダメだといわれた。
しかし、質問スレでなくなるわけではないですよね。
別の話だとも言われた。
しかし、別の話ではありませんよね。
大きくくくりすぎともいわれた。
なにをですか?
>>761 クレクレ君を容認するっていうことは質問ではなく、コード作成依頼スレになるってこと。
文章は質問しているように見えて実はコード作成依頼ということになる。
質問スレではなく依頼スレになるって理解できないのかな?
>>762 依頼はコードの実装についての質問ともとれます。
依頼も質問も変わりません。第3者がそのコードをみて問題解決につながる
こともあると思います。すくなくともいまはまだあなたの言ってることを理解できません。
やっぱり何度も問題になる
>>1 ★5は一度削除するべきなんだよ。
それでダメだったらダメなりに新しい規約を追加すればいいだけ。
いろいろ無駄な話が続いてますが、質問の方は遠慮なくどぞ〜
問題にしてるのはひとりなんだろうけどね・・・
>>763 質問と依頼は別。
何で一緒と捉えるのか意味が分からん。
きちんと説明してくれ。
>>767 これをどう実装すればいいのかわかりません。
こう書けばいいよ。
りっぱな質問のやりとりですよね。
依頼ともとれます。依頼と質問は変わりません。
そもそも、いきなりコードで書くと何でクレクレ君容認と言う事になるんだ? 回答方式のタマは回答者が握ってるんだが?
>>763 「こういうコードを書いてください。」
これも質問になるんだ。
俺には依頼にしか見えないが。
>>768 文章は質問でも実質依頼だから。
という屁理屈
>>768 > これをどう実装すればいいのかわかりません。
これは質問というより質問者の実情でしょ。
だからどうしたいの?ってことになるんだが。
>>769 コード書いてくれるなら俺の仕事も丸投げさせて貰うけど、いいの?
>>770 依頼した人はコードを知りたいのでしょうね。
質問ともとれますね。コードを書くのがめんどうだとか
使われてる気がしていやだと思うなら返信しなければいいだけですし。
問題ないと思います。
なんだ今日は生理か? 「質問と依頼は一緒」とか面白い事いうな。 クレクレ厨を容認して自分は糞コード量産して神扱いされたいだけのかまってちゃんは いい加減どっか消えてくんねぇかな。
776 :
デフォルトの名無しさん :2013/10/07(月) 20:51:23.84
このスレでコードが書けないと得するのはだれか 他のVBA質問サイトへ質問者が流れ サイトの広告収入が増える。 逆に、このスレでコードが書かれると損するのはだれか 同じく他のVBA質問サイト サイト訪問者が減り 広告収入が減る。 この辺りが本意では。
>>773 お前の仕事など知るかw
こっちは書きたい時に書きたい回答を書くだけだ。
別にルール違反でもないしな。
>>774 何で質問に取れるのか全く理解不能w
返信しなければいいと言っているけど、返信している人間が
存在している限りクレクレ君問題が続くわけだが。
完全に言葉遊びになってるね。
>>778 お前がここから消えれば一挙に問題が解決すると思うよ。
この件で「クレクレ君ガー」とか騒いでるのお前だけだから。
>>778 クレクレ君を容認してしまえば問題ではなくなりますよ。
根底に「クレクレを容認したい」ってのがある限り答えはNoで有り続けるけどね。 自分で頑張る人をそっと後押しするのが質問スレの役割。 クレクレ容認したら自分で考える奴がどんどんいなくなって、 スクリプトキディ量産するだけ、ってのが目に見えてるしな。
>>777 ウザいと思った?w
お前が書かないとしてもあいつが書くだろ。
それを見てクレクレ君がどんどん集まってくる。
>>783 コードを見て自身が考えるかどうかはそいつの自由だろ。押し付けがましい。
>>783 それはちょっと自意識過剰かなと。
質問するのってけっこう頭使いますからね。
大きなお世話だと思いますよ。
>>784 クレクレ君が集まって来ようがどうでもいい。
嫌なら答えなければいいだけ。
788 :
デフォルトの名無しさん :2013/10/07(月) 21:11:13.32
セルオブジェクトのプロパティの Formula FormulaR1C1 は、どういうときに使いますか? 使い分けなども詳しく知りたいのですが
>>786 仕様も理解せず、いきなり全てコードで答えるのも大きなお世話かと。
791 :
デフォルトの名無しさん :2013/10/07(月) 21:16:34.12
>>783 「自分で頑張る人をそっと後押しするのが質問スレの役割」と言ったが
>788 の質問に対してお手本を見せてくれ。
コード作成依頼スレ立てたらいいじゃん
>>790 質問者はそれを見て違うところは違うといい
取り入れられるところは取り入れ自分で考えるでしょう。
ほっとけばいいのではないでしょうか。
>>793 そもそもクレクレ君対策になってないだろ。
クレクレ君容認でいる限り恐らく何を言っても通じないようだし
いい加減コード作成依頼スレを立てたら?
>788 Formula A1形式で計算式を使いたいとき FormulaR1C1 R1C1形式で計算式を使いたいとき 使い分けはつかう計算式によって使い分けます
>>794 ええですから対策する必要ないのではないですかといっているつもりです。
依頼と質問は同じという立場なので私が立てるとしたら質問スレですね。
質問スレここでよくないですか?
>>794 クレクレ君よりお前の様な荒らし対策の方がよっぽどプライオリティ高いと思うが
コードを書くとクレクレ君容認になるって発想は 生活保護があると誰も働かないとでも思ってるのかな
>>797 すまんが、質問と依頼が一緒であるということであるなら依頼スレでもいいんでしょ?
何で質問スレに固執するのか理解できない。
>>800 それは何で態々別スレにする必要があるのかと同義語だな
>>803 できるだけ多くのやり取りができるのがいい。
ならできるだけ多くの人がやり取りできるようなものがいい。
質問の方が依頼より言葉の幅が広い。だから質問の方がいい。
大体さ、何でクレクレ容認したいの?
>>804 >質問の方が依頼より言葉の幅が広い。だから質問の方がいい。
質問と依頼の意味が違うっていうことを認めてるようなものなんだが。
>>807 同じところもあれば違うところもあります。
まったくぜんぶ同じならひとつのことばのはずです。
>>806 容認しとけばお前の様な荒らしが
>>1 ★5を逆手に取って一々コード書く度に荒らしに来ることが無いからに決まってるだろ。
そろそろ「住み分け」って言葉憶えようか。
>>811 そうだな。荒らしは別スレ立てて好きなだけ荒らしてろ。
クレクレされたいだけならコード作成依頼スレ立ててそっちで勝手に神扱いでもなんでもされてればいいよ
>>813 どうしてそうなりますか?
ことばはすべてがまったく同じ意味かすべてがまったく異なる意味かの
二択ではないという旨を述べたつもりです。
>>814 そんなことはだれも言ってませんよね。
クレクレだと過剰に反応するのをやめませんか。
>>813 どこの国の人?
広域で捉えたら当然そうなるだろう。
自分の読解力の無さを棚に上げて人を嘘つき呼ばわりとか
ちょっと日本人離れしているな。
>>816 単に質問と依頼は違うっていうことだけなんだけどね。
それが理解できないんだから過剰に反応されても文句は言えないよ。
>>816 クレクレ容認すると結果的にそうなるんだよ。
努力せず結果が得られるんだから。
>>818 ちょっとコードを書いただけで過剰に反応するお前の方がよっぽど混同していると思うぞ
>>818 その違うんだって主張するのが過剰に思えるってことなんですよ。
ほっとけばいいのではありませんか。
>>821 そう思うのであればお前が変に反応しなければいいじゃね?
>>819 だからなんで結果のケツ持ちまで回答者が面倒見なければならんのよ。
ただの押し付けだよ。
>>823 回答者もケツ持たないということなら押し付けだろw
>>819 努力するしないはそのひとの勝手ですよね。
他人が掲示板の書き込みだけみて判断できるようなものでもないですし
判断できたとしてどうこういうようなものでもないと思いますよ。
>>824 は?言ってる意味が分からない。
日本語で。
>>822 ええこれは依頼だと過剰に反応することはしてないつもりです。
>>825 お前の見解なんてどうでもいいんだが。
このスレではクレクレ君はNoというルールになっている、ただそれだけ。
>>825 それでもいいと言われても、それじゃ嫌と言うのがこのスレの★5なんだよ。
だからコード作成依頼スレ立てれば?って言ってるの。
>>828 ルールだからあなたはそれに従っているだけだと。
ではルールを変えましょうよ。改善しましょう。
というわけで次スレは
>>1 ★5は削除ということで。
前回はそんな流れの中この荒らしが勝手にスレ立てたので
今でもこんな騒ぎになるからな。
>>829 それじゃ嫌と★5が言ってると。
では★5を変えませんか?
>>830-831 このルールが嫌なら別スレ立てればいいのに。
このスレに何故このスレに固執したいのか?
>>830 それは貴方にとっての改善ね。
俺は今のままでいいと思うよ。
>>833 変えると言うか消そう。
本当はおかしな所満載なんだけど。
>>836 同意。
質問スレという意味でも、今のままでいい。
>>835 そこまで言うならコード不可スレ立ててそこでやれ。
正直お前一人の為に皆が迷惑してることくらいいい加減気付いて空気読め。
>>837 ね、やっぱりそう思うでしょ。
もういい加減ウンザリ
>>839 なんでだよw別スレ立てたら負けとかあんの?
>>839 何を言ってるのかさっぱり分からん。
このスレのルール自体クレクレ君対策をしている訳だから別のスレを立てる意味が無い。
>>841 別にコード書いた位で荒らさなければ何も言うつもりも無かった。
ここ暫くだって様子を見てた。
お前はやり過ぎた。
試験的にでもいいからコード作成依頼やってみればいいじゃん。 需要あると思うよ。
いやコード作成依頼スレを建てろって意味でね?
>>844 それだけ嫌がるってことは、今までの作成依頼は自作自演の可能性が高いんだけどねw
>>845 あ、ゴメン
コード作成依頼スレを立ててみたら?って意味。
妄想癖もお持ちのようですw
新しくやりたいことがあるんなら余所でやってくださいな
どんだけ自己中だよこいつwww 何が何でもこのスレの★5消してクレクレ厨呼び込みたいだけじゃねーかwww
コード容認したらあいつが戻ってきて糞コードだのなんだのって荒れるのが予想出来過ぎてダメ。
というかその「あいつ」がこいつだろ? あっ、もしかして言っちゃいけなかった・・・?
ま、今のタイミングなら過疎ると消されるけどな
>>855 あいつはどっちにしたってここにも来るだろ?
860 :
デフォルトの名無しさん :2013/10/07(月) 22:30:08.92
お前らは一体何をしたいんだwww
おっけーです!
いいこと考えた テンプレに「雑談や議論は禁止」って入れればテンプレ絶対主義者を一掃できる
コード依頼作成スレも出来たし、大手を振ってこのスレにコードを書くことが出来るな
行動力のあるキチガイって怖いな
クレクレ君なんて、スルーしてもいいし簡単に答えれるなら暇なら答えればいいし、別に見苦しくもないし邪魔でもない。 でも毎回のように起きるこの無駄な議論のほうが数倍邪魔だと思う。 スレ伸びてるなと思ったらたいてい無駄な争いが起きてる。
>>867 スルーできないバカがいるから問題になる。
なんだ、もう終わり?
暴れてたのは、前回勝手にスレ建てした奴だったか。 しかも今回は同じ名前の新スレ二個も建てやがった。
>>727 ,728,729
この程度のコードが貼られたくらいで、それほどエキサイトすることかね。
毎回100行を超えるくらいのコードが外部サイトへのリンクだけで貼られて、スレを読んでも流れがちっともわからん
とかいう事態でもないし。
>>872 クレクレ君対策ってこれほど言われても理解できてないとは、話にならん。
コードの量なんていつ問題にしたんだ?
印象操作もほどほどにしとけ。
>>873 今までもたびたびコードが貼られてきたが、クレクレ君で溢れかえってるなんてことにはなってない。
むしろ、質問者が少なすぎて過疎気味だろ。
今過去スレを新規に取得できないんだが、手元の最も古いスレにどれくらいコードがあったか簡単に調べて見た(めんどくさいので"Sub"で抽出) Part16: 抽出レス数:64 Part17: 抽出レス数:98 このスレ: 抽出レス数:32 質問者がコードを書いてる場合もあるが、前は今よりもっとコードがあふれてたぞ
ちなみに、 前スレ: 抽出レス数:22
>>874 全然違う印象。
コードが貼られてスルーしてたら、まともな質問よりクレクレ君が増えた。
なので、コードが貼られるたびに問題にすることで、クレクレ君が減った。
クレクレ君が溢れかえらないのは、こういう対応があっての話。
そもそもExcel VBAなんてググれば知りたい情報が殆ど見つかるし、
マクロの記録をすれば大抵のことは解決できるわけで過疎るのは当たり前のことだと思うが。
>>877 いつからいるのか知らないが、前は確かにもっとコードが多かった。
俺も調べた。(Subで検索)
Part4: 55
Part5: 63
Part14: 71
Part15: 52
Part16: 64
で、君はいつから問題にしてたんだ?
そして、クレクレ君はいつから増え始めた?
879 :
878 :2013/10/08(火) 18:06:11.59
「★5」で検索したら、君が活動を始めたのはPart27,28あたりからみたいだな。(同一人物なら) この辺りからスレの雰囲気が悪くなり、質問の質も落ちたと思うのは穿ちすぎか。
俺もかなり前からいるけど、前も今もクレクレ君が多いなんて思ったことないんだけど
クレクレくんなんてほとんど見ないかと。しかも本当に知らずに来たクレクレくんは指摘されたらすぐ移動してるという印象。 たいして問題でもないクレクレくん対策にうるさい人がいつも必死に騒いでるというのがこのスレの印象。
いつもルール無視の人が開き直って暴れてる印象だな、俺は。
★5消せ消せ騒がしいバカがいるなとは思ってた 新しいスレできてよかったね 今度からそっちでクレクレでもなんでもやってね
ここまでやるのか 気狂いって怖いな
スレのルール()を守らない奴がいるから荒らしてんのか? 自分はネットとか社会のルールを守らないんですかねえ
>>885 印象操作乙。
ルールを守らないやつが荒らしてるんだが。
コードを書くなとはテンプレの何処にも載っていない訳だが
ま、結局いつも通りの平常運転になるんだろうな
>>887 クレクレを助長するとか言ってなかったっけ
★5の主旨に反しない範囲でコード書くのはいいと思うんだけどなぁ
>>890 それは誰かさんのただの受取りようなだけ。
全く明記されていない。
まともに日本語読めるなら、★5は質問者に対する制限事項と解釈できるかと。 クレクレくんを助長するだけだからコード書くなとか、勝手な解釈にも限度があるかと。
ルールを曲解して、来てもいないクレクレ君と戦ってるやつが一人いる印象 自分の信じたルールに従わないとクレクレを助長すると信じて疑わない
俗に言う中華の考え方だな。 「俺に考えを合わせろよ!」
俺はクレクレくんだけど、基本的にテンプレなんて読まないよ 数行なら読んであげてもいいけど10行も20行も読んでられない だから好きにしてくれていいよ
質問があります。下のサンプルコードのように、Variant型変数にセル範囲を代入し配列としてあります。 この配列のサイズを変更する必要が出てきたため、ReDimをしたところ、 "インデックスが有効範囲にありません"というエラーが出てしまいます。 これを回避する方法のヒントでも教えていただけないでしょうか? Sub test() Dim Ar As Variant Ar = ThisWorkbook.ActiveSheet.Range(Cells(1, 1), Cells(8, 1)) ReDim Preserve Ar(1 To 9) Ar(9) = DateAdd("d", 1, Ar(8)) End Sub
>>896 配列の次元ってわかるか?
セル範囲を代入された配列は2次元配列だぞ
ウオッチ式とかで確認すればわかるが、この場合(1 to 8,1 to 1)
ReDimのヘルプにはこう書いてある
>キーワード Preserve を指定した場合、変更できるのは、動的配列の最後の次元のサイズに限られます。また、次元数は変更できません。
つまり変更できるのは後ろの1 to 1のとこだけだ
どうしてもやりたいなら、自分で新しいサイズの配列を別途つくって中身をコピーするとかしないと
898 :
896 :2013/10/10(木) 02:21:29.42
>>897 早速ありがとうございます。ReDim Preserveでは最後の次元サイズしか変更できないなんて知りませんでした。
新たな配列作ってFor文でコピーするしかなさそうですね。ありがとうございました。
900 :
896 :2013/10/10(木) 02:49:40.52
>>899 あー、なるほど。Transposeで行列入れ替えたらReDim Preserveで配列サイズ変更できますね。
試してみます。ありがとうございました!
901 :
896 :2013/10/10(木) 02:52:48.68
でも配列の最後の次元のサイズしか変更できないって不便ですよね。 他の言語でもこのような制限はあるものなんでしょうかね?それともVBAだけ?
902 :
710 :2013/10/10(木) 07:04:26.25
>>901 そもそも配列のサイズを変更できる言語の方が少ない。
最後の次元以外のサイズを変えられるようにすることも可能だけど実行時のコストが高杉。
今時の言語では配列はいらない子
904 :
896 :2013/10/10(木) 22:30:21.42
>>902 そうなんですか。VBAは特殊な部類なんですね。
ところで”実行時のコスト”とは?メモリを食ってしまうというような意味?
>>903 ??? 配列以外の優れた何かが準備されているから?
>>903 C++のvectorをVBAで使えるようにしてくらはい
906 :
デフォルトの名無しさん :2013/10/10(木) 23:33:00.70
× C++のvectorをVBAで使えるようにしてくらはい ○ C++のvectorをVBAで使えるようにしてください 正しい日本語をしゃべってください。
ピボットテーブルにフィールドリストの項目を出したり入れたりするときの画面更新を停止できると思って ScreenUpdating = Falseしたけど駄目だった。高速化したいから更新止めたいけど出来ませんか?
908 :
710 :2013/10/11(金) 01:55:52.93
>>904 > ところで”実行時のコスト”とは?メモリを食ってしまうというような意味?
>>898 が書いてるように、配列要素のコピーが発生するから、大きな配列では時間がかかる。
String型みたいに動的メモリ的にしてしまえばいい ParlとかRubiみたいにね
910 :
デフォルトの名無しさん :2013/10/12(土) 06:38:28.65
>>910 ま、まぁタイトルはともかく、問題は中身かな。
で、どうだった?ハイセンスな内容だった?
>>910 で、それのどこがこのスレと関係ある話なの?
今日も朝から更年期障害でカリカリしてんだな ネタを受け流すことも少しは覚えろや912
914 :
デフォルトの名無しさん :2013/10/12(土) 09:36:55.54
指摘されたら逆ギレ ( ´,_ゝ`)プッ
セル中の「c」を「(C)」に変換したいんですが、どうすればいいでしょうか? 文字コード160の、見えない半角スペースは ActiveCell.Replace ChrB(&HA0), " " で置換出来たので、同じように、cをCODE関数で見ると63と出たので ActiveCell.Replace ChrB(&H3F), "(C)" としてみた所、セル中の文字が全部(C)になってしまいました。 決め打ちでcだけ置換するには、どう書けばいいでしょうか?
>>915 試してないけどこう?
ActiveCell.Replace "c","(C)"
918 :
917 :2013/10/12(土) 18:13:55.70
しまった、コードでレスしたら荒れるんだっけか
>>918 アホか。
クレクレ君対策と言わないと理解できないのか?
>>918 クレクレ君対策の他に★5キチガイの対策もしないといけないから大変だよね。
922 :
デフォルトの名無しさん :2013/10/12(土) 19:01:47.99
うるさい規制が有るから、コード書けない。 コード以外で説明するのは面倒。 原因が判っても このスレでは返事出来ない。 次の規制が無いスレ toro.2ch.net/test/read.cgi/tech/1381151717/ になったら参加。
924 :
915 :2013/10/12(土) 19:30:16.51
よく見たら2chのレスでも、c(cに○)はcとしか出ないですね CODE関数で見ると63になって、他のUnicode文字?でも同じ63になったり Ascで見ると99になって、小文字のcも同じ99だったりして、いい方法が分からないので もう諦めます
>>924 (cに○)はCOPYRIGHT SIGN。
COPYRIGHT SIGNに近い文字はc。
cの文字コードは63。
AscはCP932の文字コードを返す。
AscはCP932にない文字は近い文字のコードを返す。
COPYRIGHT SIGNはCP932にない。
ゆえにAscは63を返す。
という仮説を立ててみた。
>>924 文字コードあたりは正確に言いだすとややこしいけど
Unicode見るのはAscW、逆はChrWと覚えておいて
ActiveCell.Replace ChrW(169), "(C)"
でいけるんじゃないかね
927 :
915 :2013/10/12(土) 20:21:59.48
>>925-926 で、出来ました!
昼間からいくらやっても出来なくて匙を投げてたんですが、無事置換できました
本当にありがとうございます
クレクレ君なのですが質問しても大丈夫でしょうか?
LibreOfficeにVBA搭載でExcelから人が流出すると思いきや VBAがどちらに行くにせよ使える知識になったということで まだまだ安泰にございます
931 :
デフォルトの名無しさん :2013/10/12(土) 23:39:50.52
>>930 LibreOfficeにVBAが搭載されるってのはいつの話?
LibreOffice Basicと同じもの?
933 :
デフォルトの名無しさん :2013/10/13(日) 00:13:28.21
>>932 Option VBASupport 1って書くと互換機能を利用できるけど
それとも違うもの?
934 :
デフォルトの名無しさん :2013/10/13(日) 00:17:53.01
偽オフィスはワンノート無いしスカイドライブ無いし、オフィス97レベル。 20年早かったら良い勝負してたかも。
Excelの最大値 1,048,576 行 x 16,384 列 の100倍ぐらいの数値データーが発生する情報を集計計算したいのですが一体どうすれば良いのでしょうか?
AccessでDBくんでブッこめ 扱えるならOracleでもいい
読み込むデータ数が全体のデータ数に比例しない、もしくは一定以上超えないような設計にする。 Excelはどう関係するの?
>>938 全セル埋まった状態でシートをわけても快適に動く物でしょうか?
シートをわけてそれをつながっているかのようにVBAを書くのは大変そうですね。
普通に考えてそこまで大量のデータなら素直にデータベースとの連携を考えるべきでしょ。 現在なら無料で使用できるフリーのデータベースいっくらでもあるんだからさ 俺も、そこまでの量じゃないけどMySQLを使ってる ADOについて勉強しないといけなくなるけどね
>>940 快適に動くかどうかはあなたの環境次第かと
なんでそんな大きなデータをExcelで扱いたいのか知らんけど
俺なら絶対他の手段をとる
>>936 俺の予想では、全セル埋める前に動作が重くなって実用的じゃなくなる
うちのマシンはショボいから試したくない
大量のデータはデータベースソフトで管理すべき
944 :
710 :2013/10/14(月) 00:41:54.50
>>943 そもそも、データベースでも、16,384 列なんて扱いたくない (w
列数はたしかにそうだね しかもその100倍とか言われると考える気もしないね
946 :
936 :2013/10/14(月) 02:59:49.19
データベースを扱った経験がまったく無くよく知っているExcelで何とかならないかと案を練っていました。 最初は少しずつブックに分散して記録していましたが数ヶ月するとブックのファイル数がいくつあるかわからないぐらいになり数百ギガバイトに達し 最終的にはその他のデータも含めると1テラバイトオーバーし完全に収集がつかなくなりました 分散すると収集がつかなくなりますので1つのスーパー表をつくれないかと思った次第です・・無理っぽいですね。 皆さんがおっしゃるようにデーターベースをぼちぼち勉強してみます。
流行のビッグデータか
Excelがビックデータに対応すればデータベースソフトは不用か?
データベース知らない人の集めるデータで1テラ超えとか、あり得るんか? 数か月で数百ギガの時点で無理があると思うが。 動画ファイルでも集めてるならわかるが。
>>949 技術系の仕事とかで測定器が吐きだすデータを収集するとかならあり得るかも。
計測器の吐くデータって、いまだにアスキー型式の固定長データをシリアルで垂れ流しとかあるからなあ パディング捨ててバイナリに変換するだけで1/10になったりする
>>946 今現在、テラバイトのexcelファイル群を本当に全部管理して使用してるの?
大型機の業界事情に疎いんだけど、今ってテープよりディスクのが容量多いの?
>>936 そもそもそのデータは現状どこから発生してて、
今どんな媒体にどんな形式で収まってるの?
テラを超える様な単位のデータを扱っててDBの知識が皆無ってのはちょっとあり得ないと思う。
ExcelVBAの質問スレなんだからExcelVBAでの解決を求めているのだと思うよ
Cells="" SendKeys "%{F4}" SendKeys "{N}" SendKeys "{ENTER}"
>>956 ExcelVBAでやる作業として手詰まり感があるから根本的なところを聞いて
本当に手詰まりなのか確認しているだけだと思うが。
こういう根本的なところを確認することは問題を解決するときの基本だろ。
手詰まり感w わからないのなら黙ってればいいのになんででしゃばろうとするかねw 関係ないこと聞いてなにするんだよw
このスレは質問者が去ってからが本番です
別にビッグデータをExcelファイルに落としこむ必要はなくて ビッグデータのアドレスを参照して計算するだけを Excelでやればいいだけなんじゃないの
EXCELでやるには無理があるかもしれんが、VBAでやる分には可能かもしれん とりあえずそのデータ全てをEXCELに取り込むのは無理だから それ以外の方法を検討してるわけだ
分析範囲を無限に大きくしたり単位をどんどん細かくしていくとデータ量はすぐに膨大になる 方眼紙の網の目は無限に細かくできるし数値を増やせばいくらでも巨大にできる更にそれ自体の枚数を増やすと倍になる、こうすればすぐにビックデーターになるよ。
http://oshiete.goo.ne.jp/qa/1628801.html テーブルに小計を挿入しようと色々調べてみたんですがどうもテーブル状態だと
小計が挿入できないみたいなんで
上のURLを参考に
「"シート2"を開いたときに"シート1"にある"テーブル1"を"シート2"に
テーブルじゃない状態で貼付け
貼り付けた表を項目1項目2の優先順位でソートし項目3の小計を入れる」
っていうのをマクロでやりたいんですが
Private Sub Worksheet_Activate()
Dim rngDat As Range
Dim pvtTbl As PivotTable
'データ範囲※
Set rngDat = ThisWorkbook.Sheets("シート1") _
.Range("テーブル1").CurrentRegion
このあと貼付けのとこからほとんどわからないんですがどう書いたらいいか誰かお願いします
ほとんど丸投げ状態の質問ですいません
965 :
デフォルトの名無しさん :2013/10/14(月) 16:03:32.50
オブジェクト変数を使ったときは 必ず最後に下のように書かないとダメなんですか? Set objTest = Nothing
>>965 大概スコープが切れた所で解放されるけど、
よく分からないなら付けとけばいい。
>>965 うんにゃ、書く必要があるときもあるけど、たいていは必要ない。
968 :
965 :2013/10/14(月) 16:24:14.98
>>966 スコープが切れるとはどういうことでしょうか?
>>967 あれ、プログラムみたいなものは1か0。必ずどっちかになるんでは?「たいていは」とか「〜ときもあるけど」という言葉はコンピュータの世界には似合わない。
なんだ釣りか
>>968 >あれ、プログラムみたいなものは1か0。必ずどっちかになるんでは?
プログラムみたいなものは具体的になんでしょうか。2を返すプログラムもあるでしょうし、
一概に1か0なんてことは言えないと思いますよ。
>「たいていは」とか「〜ときもあるけど」という言葉はコンピュータの世界には似合わない。
似合わないというのはあなたの価値観ですね。プログラムの動作は個人の価値観で決まるものではないので、
この場合はご披露いただいてもあまり意味がないかと。ナンセンスですね。
>>970 いや、横から変な事を突っ込んで済まんが、
ここで言ってる0か1と言うのは最終的に機械語レベルのコードになった時、
全てのコードは2進数で0と1の組み合わせから出来ているって事を言いたかったんだと思うぞ。
だから2だとしたら10な。
荒れるネタの一つ set 残り少ないけどせいぜい荒れてくれ w
>>970 何を言っているかもよく分からないけどプログラム言語は機械語と自然言語の中間に位置する為、ある程度の曖昧さを許容する。
のかもしれないししないかもしれない。
VB6スレも以前それで荒れたね
>>965 必ず書く必要はないですよ
書く必要があるときに書けばいいんです
>>977 紛らわしいからコード作成依頼スレと書いてほしいね。
>>979 いや、
>>977 が本スレの様だが
勢いもこっちの方があるみたいだし、
★5厨もうるさいこと言わないだろうし。
梅
うめ
同じタイトルで複数スレ立てた馬鹿は何考えてるんだ
うめ
埋め
シート1のA3に入力されている文字(平成25年)を参照して同じ名前、のシート(平成25年)にあるD4セルをシート1のE5にコピーアンドペーストするマクロは可能ですか? マクロでシート名を入力するのは大変なので。
>>987 range("シート1!E5").value = worksheets(range("シート1!A3").value).range("D4").value
>>989 シートが存在しないケースを考慮してない糞コード乙。
ケチを付けつしか能の無いチンカスども乙
>>992 可能かどうかしか聞かれてないのにコード書く必要がどこにある?
更にバグ有りのコード晒して質問者に失礼でしょ。
しかも動作確認もしてなさそうだし、オナニーもいいところ。
埋め
梅
うめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。