TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
C言語なら俺に聞け 154
圧縮・復元 相談室
「OS自作入門」
プログラミングのお題スレ Part15
米国国防省の標準高等言語エイダ(Ada)を語れ!
C言語なら俺に聞け 154
Android SDK以外でのアプリ作成を全面禁止へ
Perlについて
C++相談室 part136
【TDD】テスト駆動開発【TestFirst】

Excel VBA 質問スレ Part62


1 :2019/06/24 〜 最終レス :2019/08/29
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part61
http://mevius.2ch.sc/test/read.cgi/tech/1556203263/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2 :
保守

3 :
>>1
令和初乙

4 :
皆さん無知はいいんですよ
誰でも知らないこと、間違って理解してることはあるんだから

だけど知ったような口をきくから叩かれるのですよ
気をつけましょうね

5 :
令和初か

6 :
>>4
なんか辛い目にあったのか?

7 :
ムチでたたかれたいんじゃね

8 :
オートフィルターで抽出条件を変数にして繰り返し処理で1ずつ加算していくことは出来ませんか?
下記では出来ませんでした。

For i = 1 to 10
Range("A1").AutoFilter _
Field:=2, Criteria1:="i"
next

9 :
iの前後にある"は要らないのでは

10 :
何故ダブルクォーテーションで括ろうとしたのか全く意味不明。

11 :
なるほど!ありがとうございます。最初記録させてそれを元に1つずつやろうと思って、その名残で囲っていました。
助かります!

12 :
中二病みたいな感じにしたらこうかな?

┌→ FoR Z = 1 ─┐
│           └→ 10
│ RANgE("A1").AutoF F = 2, C = Z
│        │
└┐       │
  └ NExT   │
          ↓
          ×

13 :
面白さを解説してくれ

14 :
感じ取れよ・・・

15 :
そこはNExTじゃなくてNeXTにしないと

16 :
VBAができるようになると、xlsmのファイルの中には、普通のワークブック関数って使ったりしないんですか?

例えば、セルの値を別のセルに入れたりとか、if関数とか、簡単なものも
全部 VBAで書いたりするんですか??

それとも混在するんですかね??

17 :
>>16
マクロでないと出来ないことをするために使うのが普通

18 :
>>16
処理の内容によって関数の方が良い場合とVBAの方が良い場合がある。
だから内容次第。
混在もあり得る。

でもVBAメインで考えてる時は関数のことは忘れがちで全部VBAにしてしまうことも多い。
あと、自分が組む場合はそもそも関数じゃ無理な処理が多い。

19 :
変えられがちなセル関数をリセットするようなのとか

20 :
>>16
しない。
VBAが出来るようになると、発想自体が変わるから。
手で数字を入れて、計算式で答えを出す、みたいな使い方にならなくなる。

コマンドボタンを押すと、Webとかデータベースから自動で情報を探してきて、
シートに必要な答えだけを表示するとか、そんな使い方になる。

21 :
>>16
ワークシート関数の方が100倍早いからできないことだけVBAを使う

22 :
>>21
それは関数とかバージョンによると思うけど・・。
2013のVLOOKUPなら、VBA+SQLの方が何倍も速いし。

23 :
超初心者へのアドバイスなんだからザックリでいいんだよ

24 :
だな

>>16
ワークブック関数ていうものは使ったことないから分からないスマン

25 :
意味なくマクロ仕込んでるファイルは嫌われるので関数で済むものはなるべくそちらで

26 :
ワークシート関数でできることはワークシート関数で済ませて
データの差し替えとかそういうところだけVBAを使う

27 :
そうすると関数とVBAの2つを覚える必要があるからVBAで出来るならBBAでやるのが簡単

28 :
>>26
それってコンセンサスないと思えよ

29 :
コンセンサスは無いけど実務上>>26が一番安定するな

30 :
無駄にVBA使われてると「これ作った人承認欲求強いんかな」って思うわ
臨機応変に使い分けできる方がいい

31 :
基本ワークシート使って無理なものはVBAかな

そもそもワークシート使わないならVBAも使わないな

32 :
式が長くなったり作業列がいくつも必要になるような処理はVBAだわ
深いネストとか配列数式とか使うのもいいけど、ワークシート関数だけにこだわると、見通しや保守性が悪くなることもあるし

地味に厄介なのが条件付き書式
これも他人が作ったのを保守すると地獄を見ることになる

33 :
保守性で考えると名前の定義が割と曲者
大抵ぶっ壊れてる

34 :
>>33
範囲名のこと?

35 :
>>32
> 地味に厄介なのが条件付き書式
> これも他人が作ったのを保守すると地獄を見ることになる
頑張ってA1:A10に設定したのに次に見たらA1:A3,A4,A5:A7,A8:A9,A10に分割されてたり
マージしろとまでは言わないけど設定した奴を崩すなよ…

36 :
コピーペーストすると範囲がぶっ壊れるんだ

37 :
条件付き書式が壊れるのは仕様らしいぞ
よって改善される見込みも薄い

38 :
VBAで設定するの追加しとけばOK

39 :
関数と条件付き書式は被害者。
これ自体は何も悪くないのに、知らないうちに壊すアホのせいで、
糞みたいに思われてる。

40 :
それは仕組みが悪い
人のせいにしてはいかんずら

41 :
ちょっとニッチな質問失礼します。

バーコードによる品物管理のvbaの検討中です。

バーコードをスキャンした際に、数字に交じって、
グループセパレータ(GS) Asciiコード(0x1d)が出力されるタイプのバーコードを
スキャンした際、文字として存在しない、Ascii 0x1dが入力されたことを検知する術は
何かあるでしょうか。

スキャンしたデータは例えば、0000(0x1d)1234という形でスキャナから飛んできてるはずなのですが、
エクセル上の表記は、当然ながら00001234となってしまいます。

飛んでくる文字のasciiコードを逐一キャッチできれば、0x1dを検知できるかと思うのですが、
vbaでそんなこと可能でしょうか。

42 :
>>41
方法は読み取り機ごとに違う
機種によって可能だったり困難だった不可能だったりする
詳細はメーカーに問い合わせるしかない

43 :
>>41
どういう形でスキャン結果が来るのか知らんけど、文字列であれば
chr系の関数で一文字ごとに判定してみれば

44 :
>ちょっとニッチな質問失礼します。

ここの用途不明の質問に比べたら、
バーコードなんて超普通。

45 :
>>41
検知するだけだったら
0< InStr(s, ちゃー(&H1d))
ではダメなの?

46 :
Chr が投稿出来ないのか

47 :
バーコードリーダーを買い換える
二千円くらいであるでしょ

48 :
おれはUSB-COMでの読取りに挑戦してるけど
なかなかうまくいかないわ

49 :
スマホアプリ使ってるな
COGNEXのSCANNERってやつ

>>41
2つに分けたほうが良いと思う
・バーコードスキャン、文字をセルに入力
・入力したセルに対してvbaでfindか何かで検知。changeイベントになると思う

50 :
>>41
隣のセルで数値変換するか
そのセルの形式を数値にするではだめ?

51 :
>>49
> 2つに分けたほうが良いと思う
それなんの意味があるんだ?

52 :
>>30
拡張子が.xlsmだったからどんなコードが書かれてるのかと
エディタ開いて見てみたらModule1, Module2, Module3と並んでて
全部、なんもコード書かれてなく、各SheetやWorkbookにも全くコードが書かれてなかったわ

53 :
>>51
入力中の文字を触るのはIMEやらオートコンプリートやらと競合して、あまり良くない
セルの内容を確定させてから、改めて触ったほうが良い

54 :
ここ数週間、入門本とかサイトとか見ながら勉強して、
渾身のコードができたんだけど、誰か批評してくれるかい??


脱初級者になったか見て、アドバイス欲しいんだけど…

55 :
>>54
半年間そのコードを見ずに放置してから
もう一度そのコードを見てみて何やってるのか
サクッと分かれば脱初級者

56 :
>>54
暇だし上げれば見てやるぞ

57 :
>>55
なるほど。。。

>>56
ありがとうございます。
ちょっと長すぎて書き込みエラーになりました

分割して貼ります

58 :
お願いします・・・




Option Explicit

Sub 明細書作成()

Dim wsMeisai As Worksheet
Set wsMeisai = worksheets("明細書")

Dim wsData As Worksheet
Set wsData = worksheets("データ")

Dim wsSettei As Worksheet
Set wsSettei = worksheets("設定")



'明細書シートの表の基点
Dim meisaiKiten As Range
Set meisaiKiten = wsMeisai.Range("o8")

'データシートの票の基点
Dim dataKiten As Range
Set dataKiten = wsData.Range("A5")

'設定シートの組合員リストの基点
Dim listKiten As Range
Set listKiten = wsSettei.Range("A3")

59 :
'########### 転記 ###########

'明細シートの組合員を定義(オブジェクトじゃないので注意)
Dim kumiaiin As String
kumiaiin = wsMeisai.Cells(7, 3)


'------- 設定シートの組合員リストから検索して正式名を転記 ------

' 検索回数定義
Dim a As Long

For a = 0 To 14

If wsSettei.Cells(listKiten.Row + a, 1) = kumiaiin Then

'ヒットしたものを転記
meisaiKiten.Offset(-4, 0).Value = listKiten.Offset(0 + a, 1).Value & " 御中"

End If

Next a


'------- 請求月の転記 ------

meisaiKiten.Offset(-2, 5).Value = wsMeisai.Cells(15, 3)

60 :
'########### 昇順ソート ###########

'データシートの票をソート(アクティブにしないとエラー)
wsData.Activate
wsData.Range(dataKiten, Cells(dataKiten.CurrentRegion.Rows.Count + 1, 6)).Sort _
key1:=dataKiten, _
order1:=xlAscending
wsMeisai.Activate

61 :
'############ 検索 #############

'明細書の票をクリア
wsMeisai.Range(meisaiKiten, meisaiKiten.Offset(30, 5)).ClearContents

'明細書の票の行数定義
Dim meisaiRow As Long
meisaiRow = 0

'検索回数を定義
Dim i As Long

For i = 0 To dataKiten.CurrentRegion.Rows.Count - 2




'--------日付での検索--------

Dim firstDate As Date
Dim lastDate As Date

firstDate = wsMeisai.Cells(13, 3)
lastDate = wsMeisai.Cells(15, 3)

If wsData.Cells(dataKiten.Row + i, 1) >= firstDate And wsData.Cells(dataKiten.Row + i, 1) <= lastDate Then

62 :
'---------組合員名で検索---------

If wsData.Cells(dataKiten.Row + i, dataKiten.Column + 4) = kumiaiin Then

'ヒットしたものを転記
meisaiKiten.Offset(meisaiRow, 0).Value = Month(dataKiten.Offset(0 + i, 0).Value)
meisaiKiten.Offset(meisaiRow, 1).Value = Day(dataKiten.Offset(0 + i, 0).Value)
meisaiKiten.Offset(meisaiRow, 2).Value = dataKiten.Offset(0 + i, 1).Value
meisaiKiten.Offset(meisaiRow, 3).Value = dataKiten.Offset(0 + i, 2).Value
meisaiKiten.Offset(meisaiRow, 4).Value = dataKiten.Offset(0 + i, 3).Value
meisaiKiten.Offset(meisaiRow, 5).Value = dataKiten.Offset(0 + i, 5).Value

meisaiRow = meisaiRow + 1

End If

End If

Next i

End Sub

63 :
すみません。
ちょっと長いんですが、よろしくお願いします!

なんか2chに貼るとインデントが消えました...

64 :
>>53
セルに入れてわざわざイベントでやるというのが意味不明
VBAでやるなら普通に変数に入れればいいだけだろ

65 :
>>63
・無駄な改行が多すぎる
・この長さならfunction分けたほうが良いかも知れない。まぁvbaならどっちでもいいけどな
https://i.imgur.com/KicuV2d.png

>>64
それが出来ればそれでokだけど、
スキャンした文字列をvbaで受ける方法が良く分からない

66 :
>>63
一応だけど、コードはこのままだと動かないぞ
こういう感じで書くと見やすくなるってだけ

67 :
>>65
> スキャンした文字列をvbaで受ける方法が良く分からない
>>42

68 :
>>67
だろ、だからその方法は回答できない

69 :
>>65
ありがとうございます!
なんか見やすいです。

ちょっと自分のをいじくってみます!

70 :
>>68
回答もできないのに
> 入力中の文字を触るのはIMEやらオートコンプリートやらと競合して、あまり良くない
とか言ってたのかよw

71 :
組み込みのソート機能ってアクティブにしないとエラーになるのか…
知らんかった

72 :
>>66
だよな。
プロシージャ内で宣言したものを、
プロシージャ外で使う方法があるのかと思って、ビックリしたわ。

73 :
ということは、dimしてる行を全部外に出せば良いのですかね?

今いじくっているんですが、俺のレベルでいじくると、動かなくなりそうでコワイ...

74 :
>>70
そんなに面白いの?

>>73
まぁメインはできるだけシンプルにして、各ルーチンを外に出せば、
この先処理が増えてもメンテが楽って事
今から書き直すのは大変だからやらないほうが良い。そこに意味はあまり無い

75 :
>>73
いや、全部じゃなく、複数のプロシージャで使うものだけね。
あと、「脱初心者」ってことなら、1セルずつ処理するのではなく、
配列に入れてからの方がいい。
あとは、ループで探すんじゃなくて、
アドバンスドフィルタで一気に取り出して、後から書式を加工するとか。

76 :
↑理由を書いてなかった。
1セルずつだと、件数が多くなってきた時に遅いから。

77 :
>>74
> そんなに面白いの?
知ったかをバカにしてるだけ
あと今時グローバル変数を勧めるなよ…

78 :
>>74
わかりました。別のを作るときの課題にします!

>>75

1、あと、「脱初心者」ってことなら、1セルずつ処理するのではなく、
配列に入れてからの方がいい。

2、あとは、ループで探すんじゃなくて、
アドバンスドフィルタで一気に取り出して、後から書式を加工するとか。

この2点、今の俺には知識がなく、どんな処理になるのかイメージがわかないので、ちょっと勉強します!




お二方、アドバイスありがとうございました!
プログラミング、スゲーおもろいです。

79 :
これからプログラムを勉強する人への最大のアドバイスはVBAなんか辞めとけ

80 :
>>78
1は>>76にもあるが処理速度の問題

状況によってはとてつもなく遅くなる

81 :
>>65
一般的に多いキーボ−ドインターフェースの場合、スキャンしたものを取り込むのは難しいぞ。
多分、ここにいる人達じゃ無理だと思う。
キーボ−ドフックのコードが書けるかどうかだね。
シリアルの場合は簡単だけど。

セル内の文字列に1Dが含まれている可能性が高いからスキャンした文字を受ける必要は無いと思う。
それに面倒なキ−ボードフックのコードを書く前にセル内の文字列に含まれているかを確認する方が先だ。

82 :
キーボ−ド
キ−ボード

何故

83 :
キーボードフック知ってる俺すげー君登場ww

84 :
>>83
普通の知識だよ
グローバルフックって言う方が通りが良い気はするけど

85 :
キーボードI/Fと同じと見なせるって前提なの?

86 :
>>85
それが分かっていないから答えようがない

87 :
>>84
>>81によると
> 多分、ここにいる人達じゃ無理だと思う。
らしいよww
まさかと思うけど揶揄してることはわかってるよね?

88 :
>>87
どうでもいいかな
回答もできない無能に自覚してほしいだけで

89 :
キーボードをフックしていいのは昭和時代まで
Windowsではイベントハンドラを作るんだよ

90 :
>>58
このコードはシートに書いてるのかモジュールに書いてるのかどっち?

91 :
なぜ突然キーボードフックが出てくるんだ…
まさかバーコードスキャナーが出力ををVKほにゃららで送ってくるのか?
そんな変態デバイスあんの?

92 :
> 回答もできない無能に自覚してほしいだけで
昭和脳の渾身の回答w
・グローバル変数
・グローバルフック
マジで邪魔でしかないな

93 :
>>92
煽るならもうちょっと真面目にやってくれ、他人のレスの寄せ集めじゃないか
全然ダメージないぞ、画面の向こうの相手をR気でやれ

94 :
>マジで邪魔でしかないな

お前が言うな。
qzOxQgj0で検索したら、役に立つ情報1つも書いてないじゃないか。
そういうのを邪魔というんじゃないか?

95 :
スキャンした文字列をVBAで受けるのが分からないと書いてたから、それは難しいぞと返しただけなんだが。
難しいのさえ知らなかった人達が多いんだからな。
そりゃ、ここじゃ無理だろ。

だからまず問題のスキャナから入力されたセルの値に1Dが入ってるかをまず確認してほしいんだがね。

96 :
>>91
バーコードスキャナは全然違うものを送って来るよな。
キーボードの仕組みを知っている人は少ない。
VBA関係なく世間一般にプログラマーと呼ばれる人達においても。

メイクコード、ブレイクコードとかコマンドとかね。

97 :
>>93
> 全然ダメージないぞ、画面の向こうの相手をR気でやれ
自覚がないとか最悪だな
まあ自覚あったら回線切って二度と出てこれないわな

>>94
> qzOxQgj0で検索したら、役に立つ情報1つも書いてないじゃないか。
害悪な情報ドヤるよりマシだろw
まさかグローバル変数を勧めるのが役立つ情報とか言わないよな?

98 :
>>97
お前は自分が誰に向かって話してるのかも分からんのか?
滑稽だなあ。

99 :
キーボードフック知ってる俺すげー君乙w

100 :
>ID:/qzOxQgj0
なんでそんなに必死なの?

101 :
みなさん知識マウント楽しそうで何よりです^_^

102 :
ケチつけ連投するしか能がない真正バカ小原のことはほっときなさい

103 :
>>97
誰もグローバル変数なんか勧めてないが。

104 :
>>103
入門本とか見てるやつに>>65みたいなコード示したらグローバル変数勧めてるようなもんだろ
事実>>73はそうしろと言われてると思ってるし

105 :
>>104
ExcelVBAはworkbookを中心にスクリプトを組むので、
実はグローバル変数のデメリットがあまりない
開発が1人なら尚更
1000行ぐらいのコードなら、さっさとグロ−バルでもなんでも使ってスクリプトを組んだ方が良い

106 :
このスレに、あきらかにプログラミング経験のかなり乏しいやつが紛れ込んでるな
キーボード操作に熟達してれば、普通はマイナスと長音を間違えたり混在させたりしない

107 :
>>106
「質問スレ」だからかと。

108 :
>>105
ガチの基地外かよ…

109 :
>>108
他人のレスが無いと何も反論できなくて草

110 :
>>106に指摘されてるのにこれ以上何を言うことがあるんだよ…
質問スレとか関係ないだろ
「グロ−バル」なんてどうやって入力してるんだよww

111 :
>>110
誰の事だよって俺の事か
>>81も変なタイプミスしてるなーと思ってたけど、多分今、googleIMEの変換がおかしくなっている
あまり気にするな、俺も気にしない

112 :
なんだ、長音とマイナスってそういう意味か。
くだらねえ。

俺はスマホで手書き入力使ってるんだよ。
VBAと何の関係が有るんだ?
馬鹿馬鹿しい。

113 :
そういうところに無頓着なのは>>106の言う通りプログラムの経験なさすぎ
そんなレベルで
> 暇だし上げれば見てやるぞ
とか頭おかしい
で、結論が
> ExcelVBAはworkbookを中心にスクリプトを組むので、
> 実はグローバル変数のデメリットがあまりない
とかww
マジでちょっとは自覚した方がいいぞ

114 :
>>113
具体的にどう問題があるの?

115 :
自分で考える力がないから〜♪
他の人が指摘するまで〜♪
突っ込む事ができない〜♪♪

116 :
>>104
どこをどう見たら>>65がグローバル変数を勧めることになるんだ?
>>73が初心者で理解出来て無いだけじゃねーか。

>>65を見てグローバル変数を勧めてると思うのはよっぽどの初心者だぞ。
引数って知らないか?

117 :
>>113
だから、お前は誰と勘違いしてるんだ?
それに、無頓着とプログラミング全く関係ないがwww

自分のレベルの低さを誤魔化そうとするな。
発言からレベルの低さは滲み出てるから誤魔化そうとしても無駄。

118 :
あと、言っとくがキーボード操作とプログラミングの関係も分かってない。
ギーボード操作が上手くないプログラマーなんていくらでもいるぞ。

119 :
>>114
ここでグローバル変数の弊害を説明しろと?
マジで言ってるならちょっとググってこいよ…

>>116
だから入門書とか見てる奴に引数もちゃんと書いてないコード示すなよって話な
VBAスレだと引数知らない奴がいても不思議じゃないし

>>117
はいはい、キーボードフック書ける君は凄いよ
これで満足かなw

120 :
>>118
誰もキーボード操作の話なんてしてないよ
作った文章なりコードに無頓着かどうかの話
そういう違いもわからない時点で…w

121 :
>>119
早く誰か助けてくれると良いね

122 :
>>116で「引数」という単語が出てからようやく>>119で「引数」使ってて草
幾ら何でも自分に自信なさすぎだろう

123 :
>>120
元々の>>106はキーボード操作の話じゃね―か。
そしてお前は>>106の言う通りと書いてる。

お子様かよ。

124 :
>>122
というか、俺に言われて調べ始めたに一票www

125 :
>>122
あのさあ、グローバル変数ガーって指摘してたら引数で渡してない事を言ってることぐらいはわかるだろ…
そんなところまでいちいち指摘するしかない所まで追い詰められてるのか?w

126 :
>>125
新しい単語増えなくて草

127 :
>>123
> そしてお前は>>106の言う通りと書いてる。
ああすまん
> 誰もキーボード操作の話なんてしてないよ
これは間違いだな
ただ「>>106の言う通り」は「あきらかにプログラミング経験のかなり乏しいやつ」のことな

128 :
>>127
やっぱり人の使った文章しか使えなくて草

129 :
>>126
増やす必要あるの?w

130 :
>>128
で?
人の使った文章かどうかに関わらずグローバル変数を勧めるのが害悪なことには変わりないだろ
まあもう引っ込みつかなくなって話そらそうと必死なのはわかるけどさww

131 :
>>129
話題を広げられない、人の引用しか出来ない
これでは君が発言する必要が無いね
個人的には生きてる価値もないと思う

132 :
>>130
そもそも>>125が嘘だろ。
>>116で初めて知ったのにwww

133 :
>>127
>>117に書いた通り。
無頓着とプログラミングも全く関係ないわけだが。
反論するなら>>117についての反論も言わないと全く意味がないわけだが。

134 :
VBAはエクセル専用用途だから意味があるんじゃないの?
エクセル以外なら他言語推奨

135 :
WordとかAccessとかPowerPointとか他のMicrosoft製品にもある(実際Wordで使ってる)

136 :
>>132
引数わかってないのにグローバル変数云々が言えるとでも思ってるのかよ…
どういう理論なんだよw

>>133
はいはい、そうだね
別にそこは議論の主眼じゃないから君の言う通りでいいよ

137 :
>>131
> 話題を広げられない、人の引用しか出来ない
> これでは君が発言する必要が無いね
> 個人的には生きてる価値もないと思う
ブーメランすぎるww

138 :
>>135
Outlookにもあるよ、使ってるし
Accessはそれ自体をあまり使わないからVBAも使ったことないな

139 :
業務にも依るんだろうけど、Excelについで使うのはAccessだな
パワポでも使えるのは知らんかった

140 :
ca01をNGに突っ込んだら
当面このガイジは見えなくなるよ

141 :
>>138-139
挙げるとキリが無いから省いたが、ほとんどのMicrosoft Office製品に入ってると思っていい
(PublisherとかProjectとかVisioとかそういうの)
ちなみにWordで組んだのは文脈から漢数字だけを判別して半角英数字に置換したり段落書式を設定したりアウトラインとかインデントを付けたりとかそういうの
話が脱線するのでこの辺で

142 :
>>140
一人でNGしとけばいいのにいちいち報告とかw

143 :
俺、初心者だけど、C4oDmko00が劣勢なのはすごい分かる

イチャモン付けてケンカ吹っかけたけど、
相手が強すぎて、返り討ちにあって逃げてるチンピラみたい

かわいそう。。。

144 :
>>143
> 俺、初心者だけど、C4oDmko00が劣勢なのはすごい分かる
どこを見てどういう理由でそう思ったのかな?
具体的に書いてみ

145 :
今北産業

146 :
>>136
???
またおかしなこと言い出したぞwww

引数取らないプロシージャ並べて呼び出す時にグローバル変数で連携しようとするのを批判してるんだろ。
引数知らなくても批判出来るし、知ってたら一番先に引数について言及する筈なんだけどwww

147 :
>>143
ID変えてご苦労様。
このスレでよく見かけるからバレバレ。
ついでに口調もそっくりwww

148 :
あれ、ca01とか書いてたから勘違いしたぞ。

149 :
グローバル変数を批判する奴ってセル値でのステータス値管理も批判するのかな
危険性はあまり変わらないんだけど

150 :
>>145
以下をNGにしとけばOK。
ワッチョイ ca01-BSeC
ワッチョイ fe68-bYGp
ワッチョイ a991-afcP

151 :
>>145
>>65でID:ar/F9wgf0がプロシージャを分けると見やすいと例示した動かないコード
それを見たID:C4oDmko00がなぜかグローバル変数の使用を推奨していると勘違い
グローバル変数以外にも引数で渡すこともできるし、もっと他の方法もあるのになぜか「お前グローバル変数推奨したやろ」の一本槍で糾弾


ちなみに>>65をぱっと見ただけで俺が思いついたのは:
・モジュールレベル定数(Private Const)を使う。
・モジュールレベル変数(Private)を使う。
・必要な変数のみを引数としてプロシージャに渡す。
・自作クラスを作る。
スキルが低い俺でもこんだけ色々な選択肢があるなーと思うわけだが、どれを選択するかは書く人の自由で、
「これをどう動かすかは自分で考えろ」というだけのことだろう。


余談だが、俺はグローバル変数=パブリック変数(Publicステートメントで宣言する変数)だと思ってた。

152 :
>>146
引数知らない奴がどう批判するんだろう…
どんどん意味不明になってるぞw

>>147
必死すぎ、顔真っ赤だろ
ちょっと落ち着けば自分がどんだけアホなこと言ってるかわかるだろうけど…

153 :
正直VBAでするお仕事の規模でグローバル変数とか気にしてもしょうがないぞ

154 :
>>149
ステータス管理の内容によるだろ
その状態を次回まで引継ぐとかならセルでやるしそうでないなら変数でいいと思う
セルは通常のプログラムで言うストレージに近い

155 :
俺がここ(>>65)で教えてもらったのは、色々な書き方があるって事で、絶対こう書けってことは言われてないぜ。
俺が脱初級者になる為の一つのヒントをもらっただけで、俺の技量が上がれば、何が最適か自分で判断するよ。


凄腕の人が、ヒントやキーワードを無料で教えてくれてるだけで、ホント感謝だわ。

156 :
>>151
スコープの話にしようとしてる?
まあどんな方法を取るかはプログラマー次第だけど、今時グローバル変数/モジュール変数はなぁっていうだけの話
あと自作クラスを作るのはいいけどそのインスタンスはどうやって持つつもり?

157 :
>>156
流れと関係ないけど、「グローバル変数を使うのはやめてクラス化しましょう」
みたいな意味不明な主張はわりと見る。

158 :
>>149
・そのステータスがUIの一部でもある
・プログラムが終了しても値をセーブしておきたい
場合なら許容できるかな

159 :
あとからメンテさせられた時大変なのでVBAかどうかではなく構成によって使い方を考慮してもらえるとありがたいです

160 :
>>157
あれなんなんだろうね
なんか異様なクラス信仰でもあるんだろうかw

161 :
>>152
何故引数を知らないと批判出来ないんだ?
バカ過ぎだろ。

お前のような初心者はプロシージャを分けるという発想が無い。
引数を知らないからプロシージャを分けたら連携するためにはグローバル変数を使うしか無いと思ってたんだろ。
バレバレだ。

162 :
>>156
その批判もピント外れ。
今時とか関係ないからwww

163 :
>>156
「今時なあ」は君の意見じゃないのか。
何か、最初の勘違いから変に君とおかしな奴のIDを間違えるようになっちまった。

164 :
マジでIDが分からなくなってるな。

165 :
必死の連投w
ちょっと頭冷やせばいいのに…

166 :
どっちにしても引数知らなくてもグローバル変数批判は出来るし、実際批判したじゃないか。

167 :
マジで言ってるのか…

>>73
> ということは、dimしてる行を全部外に出せば良いのですかね?

これはグローバル変数を使うことを示唆してる
それに対して>>74が何も言ってないから指摘したの、わかる?

ちなみにいま読み返したら
>>75
> いや、全部じゃなく、複数のプロシージャで使うものだけね。
と、もっと直接的に言ってるアホがいたわ
しかもそいつは
>>103
> 誰もグローバル変数なんか勧めてないが。
とか言ってるしww

168 :
>>150
>>151
サンガツ
よく状況が分かったよ
他人を馬鹿にしたいだけ人っているよね
初心者から抜け出せないタイプだと思うわ

169 :
> 他人を馬鹿にしたいだけ人っているよね
> 初心者から抜け出せないタイプだと思うわ
ブーメラン乙w

170 :
ちなみにグローバル変数絶対反対っていう風潮って古いよね
ローカル変数を多用した状態管理って保守運用のフェーズでは多重階層化の弊害を招きかねないから変数スコープの制限はケースバイケースでしょ

171 :
>>169
どこがブーメランなんだ?
俺は他人を馬鹿にしたい "だけ" の人間ではないし、初心者でもないんだが
馬鹿を馬鹿にするのは楽しいけどな

172 :
>>167
だからそれは引数を知らなくても出来るし、実際知らなかったろ。
引数を知っていた筈という話には全く繋がっていない。

173 :
「自称」非初心者がなぜか
> ローカル変数を多用した状態管理
とか頓珍漢な事を言い出したぞw
なぜわざわざ墓穴を掘りに来るんだ…

174 :
>>172
まだ言ってるのかよ…
お前がどう思おうと客観的な根拠もないことを何度繰り返しても真実にはならんよ
真実は
>>65を見た>>73がグローバル変数で情報の受け渡しをすると思った
だけな

175 :
>>65で教えてもらっただけで、そんなこと全く思ってないけど??
勝手に何言ってんだ??

176 :
喧嘩のダシにしたいだけだからほっとけ

177 :
>>175
お前が誰かは知らんけど
>>73
> ということは、dimしてる行を全部外に出せば良いのですかね?
って書いてるからな

178 :
>>104
全部出していいかと聞かれたから、全部は出すなと言っただけだろうが。
それのどこが推奨してることになるんだ?
もし推奨するなら、全部出せって言うわ。

179 :
それは俺なんだわ

ただ
>>65を見た>>73がグローバル変数で情報の受け渡しをすると思った

これは全然違う



おまえ、ここで親切に教えてくれてる人に不快な思いをさせるなよ

180 :
>>179 = >>73

181 :
飲みに行って帰って来たらまだやってて笑ったw

>>177
一日中不毛な言い争いしてて受けるw
生きてる意味ねーw

182 :
このキッズは全方位敵なん?

183 :
>>178-179
なら
> ということは、dimしてる行を全部外に出せば良いのですかね?
の意味を説明してみ

184 :
>>183
なんで??

185 :
>>181
> 生きてる意味ねーw
もうそう言う事しか言えないんだな…

186 :
>>184
ああ、説明できないなら無理に説明しなくてもいいよ

187 :
>>178
> いや、全部じゃなく、複数のプロシージャで使うものだけね。
なんのためにこんなことが必要なんだろうねw

188 :
>>186
じゃあ言うなよ

189 :
>>185
生きてる意味ないのは本当だろう。
リアル社会でどんだけクズなのか知らんが、
こんなネット掲示板ですら何の役にも立たず、荒らすだけの存在なんて。

190 :
>>187
全然反論になっていない。
グローバル変数を勘違いしようがしまいが、お前が引数を知らないで、プロシージャを分けるとグローバル変数を使用するしか無くなるという頓珍漢な批判したことは変わらない。

191 :
>>188
ああ、すまん
そこまで困ってるとは思わなかったよww

192 :
>>189
自己紹介乙w

193 :
>>190
俺がどう批判したかなんて関係ないよ
>>75
> 複数のプロシージャで使うものだけね。
って言った事実は消えないってだけ
可能ならその意図を説明して欲しいが、まあ無理でしょ?w

194 :
>>191
なんでお前に説明せなあかんねんって事なんだが、
なにひとりで納得してんの??
気持ちわりー

195 :
>>193
ローカルとグローバルを使い分けるという意味だが。
ローカル教のお前は理解できんだろうが。

196 :
>>193
>>75は全くその通りだが。
何がおかしいんだ?

197 :
>>195
ああ、そういう意味で>>193は批判してたのか。
うん、使い分けるという意味だよなあ。

逆に>>193が何を言ってるのか分からんかったよ。

198 :
>>195
は?
> 複数のプロシージャで使うものだけね。
なのにローカル?
使い分けるってことはグローバルも使うってことだよね?
まあ>>194みたいな結論になる前に黙ったほうがいいと思うよw

199 :
>>198
えっ、お前ってグローバルは少しも使っちゃいけないって意見だったの?
一体、どこの初心者だよw

200 :
>>198
何でお前はそんなに俺がグローバルを推奨してるってことにしたいんだ?
もう一度言うが、外に出して良いかと聞かれたから、
外に出して使うケースを書いただけだぞ。

201 :
結局これは何だったんだ?

>>65を見た>>73がグローバル変数で情報の受け渡しをすると思った

こいつは俺の思考を勝手に解釈して、間違って恥かいてたの??

202 :
ID:C4oDmko00 はもう人に迷惑かけるんじゃねーぞ

今流行りの犯罪者になっちゃうぞ

203 :
>>199
必要なら使う
必要ないなら使わない
せっかく>>65みたいに機能分割したんならグローバル変数なんて必要ないでしょ
って言うだけの話

>>200-201
もうお前らいいからw

204 :
>>203
>もうお前らいいからw

人に聞いておいて、何だその言い草は。
お前マジで人間終わってるよ。生きてて良いレベルじゃない。

205 :
>>203
はい?
何言ってんだ?

機能分割とグローバル変数は関係ないぞ。
アプリ全体で使いたければグローバル変数にするだろ。
プロシージャを何個もまたぐのに、それだけの為に全部引数で渡すのか?

プロシージャに分けるのは汎用化、独立性の為で、その為にグローバル変数じゃなく引数にするということはある。
しかし、アプリ全体を通して使いたいものは、グローバルで問題無いぞ。

206 :
>>204
> 外に出して使うケースを書いただけだぞ。
だからそれはなんのためにやるんだ?
って聞いてるのにローカルがどうのこう言われてもねぇ…
重ねて言うけど外に出さないケースなんて聞いてないから

207 :
>>206
もういいってお前が言ったんだぞ。
いい加減にしろ。

208 :
俺はもう降りる。

いいか?
間違っても、犯罪起こして、ネットでバカにされたせい、
全部こいつらが悪いとか言うんじゃないぞ。

209 :
>>205
例えばログ用のインスタンスとかならあるだろうな
でも>>65みたいなケースはちがうでしょ?
具体的に言えば例えばkumiaiinっていう変数は「転記」と「検索」でしか使ってないのにグローバル変数にするの?
って話ね

210 :
>>207-208
相手して欲しいのかして欲しくないのかどっちだよw
むしろ危ないのはイライラしてるお前じゃね?

211 :
ワークブックとかシートとかのExcelオブジェクトでPublic変数を定義する場合と標準モジュールでPublic変数を定義する場合とでは挙動が違うっていう点も大事だと思うんだよな

212 :
飲み直したらまだやっててワロタw
その人生楽しいの?w

213 :
明日も仕事だしさっさと寝るわw
何の意味もない煽りあい頑張って~
バイバ〜イ

214 :
貴重な土日の休みを2chのレスバで消耗するとか悲しすぎるだろ

215 :
そのまま寝ればいいのに構ってちゃんかよw

216 :
争いは同じレベルのもの同士でんでん

217 :
vbaでpdfの入力フォームとかいじる必要がでてきたけどぜんぜんわかんねえ

218 :
>>217
AdobeのPDFを編集出来るバージョンを持ってれば、参照設定でいじれるし、
ググれば結構作例が出てくるから難しくはない。
無ければ難しいだろうね。

219 :
Acrobatなしのpdf編集なんて楽勝やろ、と思ったらゲキムズで諦めた
今でも難しいんかね

220 :
中身がテキストじゃなくバイナリって時点で、Acrobatなしは諦めたけど、
XFDFだっけ?
ああいうのでも良ければ何とかなるかもしれない。

221 :
>>219
まだ昔の方が比較的簡単だった
今はもう完全に不可能と思った方がいい

222 :
>>221
ありがとう
素直に無理だと言えるわ

223 :
>>221
構造は基本変わってないでしょ?
機能がたくさん付加されてるから完全対応とかはめちゃ大変だけど

224 :
ゼロからPDF形式のファイルを生成するだけなら簡単
下位互換はあるから、昔の簡単なフォーマットで作ればいいだけだから

最新バージョンの編集は、機能が増えすぎてちょっとやそっとじゃ対応できない
PDFの仕様書はネットに転がってるから、あとはやる気次第かなあ
https://itchyny.haten%61blog.com/entry/2015/09/16/100000

225 :
だからそんなのをVBAでやるなって
エクセルとかオフィス専用なんだろ?

226 :
いいなぁ僕もマウントできるくらい、まくろのお勉強しないとなぁ

227 :
>>217
単にWordで入力欄のあるPDFを作るのをVBAで補助するだけじゃあ駄目なの?

228 :
>>227
駄目だから聞いておるのだ

229 :
>>228
聞いてないじゃん

230 :
>>229
このハゲー!

231 :
初歩的な質問で申し訳ないんだけど、ボタンをクリックしたらテキストボックスの値を参照して、参照した値を表示するプログラムがうまくいかないんだけどどう直したらいいのか教えて欲しい。エラーはこんな感じ
https://i.imgur.com/AG4P5Zh.jpg
https://i.imgur.com/VSa48Wl.jpg

232 :
標準モジュールに書いてるの?

233 :
間違えたユーザーフォームじゃないのか
たしかSheet1のモジュールに書かないと名前を認識しないはず

234 :
>>232
標準モジュールに書いてる、というかボタンをつくってVBを編集すると標準モジュールにコードが書かれるんだけどSheet1にボタンのコードを書くってどうやるの?

235 :
>>229
まあ作りたいものの要件も定義できないんだろうね
各種バージョンによって仕様のあるPDFをVBAで編集するなんて考えるだけ無駄なのに

236 :
>>233の言うとおりにシート1に書いたコードを実行したら動くんだけど、ワークシート上のボタンを押しても反応しないのはなんでなんだ
https://i.imgur.com/Kwm4ZvL.jpg
https://i.imgur.com/QgVMdBG.jpg

237 :
イベントの名前間違えてるよ

238 :
>>236
このシートにあるボタンって標準モジュールのボタン2で書いたコードと同じもの?

239 :
ボタンのプロパティを見てみて

240 :
>>237
出来ればどこを間違えてるか教えて欲しい
>>238
同じもの

241 :
Private Sub TextBox1_Change() の1行を
Sub ボタン2_Click()
に変えれば動くはず。

242 :
>>240
同じものであれば、>>236と同じエラーが出るってこと
ならば、txt.TextだけどSheets(1).txt.Textでないの

243 :
ごめん確認したけどActiveXじゃないフォームコントロールのボタンだと
シートモジュールに書いても無理だったわ。
標準モジュールに以下のとおりやると動く

Sub ボタン1_Click()
MsgBox Worksheets(1).TextBoxes("txt").Text
End Sub

ワークシート1枚なのが前提だから調整してね。

244 :
オブジェクト名だけでの直接指定ってシートモジュールでないと通じないし
でもフォームコントロールのイベントは標準モジュールに書かないと動かないっていう

245 :
>>239
ボタンのプロパティが表示されない
>>242
>>243
こうなったんだけどなんでだろ
https://i.imgur.com/qivCtCe.jpg

246 :
https://i.imgur.com/017G76Q.jpg
>>243
画像こっちだった

247 :
ごめんフォームコントロールじゃなくてActiveXでボタンをつくったらちゃんと動いた皆が言ってたのはこういう事だったのか
https://i.imgur.com/aBVNoI2.jpg

248 :
こっちだとこれで上手くいくんだけどね
https://i.imgur.com/BOjQoKC.jpg
環境はoffice365
テキストボックスは挿入タブから作成
ボタンは開発タブのフォームコントロールから追加

249 :
そうそうフォームコントロールよりActiveXのほうが複雑だけど融通が利くよ

250 :
>>244
まあ、「フォームコントロール」は使うなと教わった気がする
ActiveXですべてコントロール書くな
混ぜて使うと今回みたいにぐちゃぐちゃになるよな
>>245
>ボタンのプロパティが表示されない
ああ、フォームコントロールは表示しないのか、使わんほうがいいと思う

251 :
ID:ZjOdLx630 ID:yoXwfxDh0色々教えてくれてありがとう

252 :
ActiveXってまだ使えるのか?

253 :
ガソリンとディーゼルのいいとこ取りじゃけんの

254 :
簡単なフォーム作って動作確認したらテキストボックスの内容だけが指定セルに入力されません。
どこを修正できるかおしえてくれませんか?
Private Sub ComboBox1_Change()

If ComboBox1 = "1−1" Then
Range("A1").Select
End If

If ComboBox1 = "1−2" Then
Range("B1").Select
End If
End Sub

Private Sub CommandButton1_Click()

If ComboBox1 = "1−1" Then
Range("A1").Value = TextBox1.Text
End If
If ComboBox1 = "1−2" Then
Range("B1").Value = TextBox1.Text
End If
End Sub

255 :
狙いがさっぱり分からん。
何でコンボボックス選択でセルを選択してんの?

256 :
あと何でComboBox1の後を省略すんの?

257 :
四半期ごとのデータを入力する際に入力するセルをコンボボックスで指定したいからですね

258 :
いやいや、セルの選択は必要無いと言ってんの。
つまりComboBox_Changeのプロシージャは全部必要無いと思うと言ってる。

259 :
選択してなくても入力出来るし、普通はセルを選択するコードって書かないものなんだ。

敢えて、ユーザーにここだよと知らせるために選択することなんかは有るけどね。

260 :
>>258
確かにChengeプロシージャはなくていいと気づきました。クリックイベントで思いっきり指定してますね。ありがとうございます。
そこを丸々消してもテキストボックスの内容が指定したセルに入力されないところがどうしても分かりません、、、

261 :
ComboBox1の後ろを省略すると、Valueなんだっけ?
Valueじゃないものがデフォルトなら、入らないと思うけど。

262 :
>>261
ようやく意味がわかりましたわ。>>256はそのことを言ってたんですね。
そこを修正してようやく入力できました。
ありがとうございました。

263 :
レポートでexcelの問題が出たのですがexcelのeの字もわからないド素人で
全く解ける気配がないので解いていただきたいのですが

excel表↓
https://gyazo.com/09fca1ee73fb7c9e157e34b8087266aa
処理条件↓
https://gyazo.com/ea0a04a984a92f0cdf4fb02024003e06
問題↓
https://gyazo.com/91b5a7da5245d2ff536597fcf7414b13
https://gyazo.com/7bebc69a5a6ef8e282adfdf814311a72
https://gyazo.com/c55982b0303f977923d30dd1c46ec9d2
https://gyazo.com/deb035bd0a7e3e3118e3bfac5ef26071
excel表と処理条件を見て問題を解く感じです
お手数ですがどうかお願い致します

264 :
ここは、宿題スレじゃないですよ

265 :
>>264
そうなのですがたexcelプログラミングに特化した方達がいるスレが他に見当たらなくて・・
何卒お願い致します><

266 :
>>263
他人の力でレポート提出するのはよくないよ

267 :
最初から解く気がないからここで答え聞いても多分わからないままじゃない?

268 :
プログラミングに興味があってしてるわけじゃないので分からないままで大丈夫です
教科書を見ても該当の問題がないので八方塞がりになってます
ですのでお願いします><;

269 :
excelスレとマルチか

270 :
つーかここエクセルのスレというかエクセルのVBAのスレだしな
表計算そのものはスレ違いかと

271 :
>>268
馬鹿はR

272 :
>>263
単位落とせ
ついでに退学しろ

273 :
>>268
自力で出来ないなら諦めるしかなかろう
能力以上に背伸びしようとすると他人様に迷惑がかかるから分を弁えて生きていけよ

274 :
難癖つけたい昭和の爺しかいないのか(´ . .̫ . `)
他をあたります

275 :
これが本性です

276 :
時間を使ってもらうことだから解答してもらえないのは不満はないけど
嫌味だけ言ってくるのはね

277 :
>>268 みたいなこと書いたら火に油。
・表計算の関数式はプログラムではない。Excelのプログラム言語はVBAで、関数式ではない。

・質問内容がExcelとネット環境が使える状態ならヘルプやネット検索で得られる情報で手元検証しつつで解ける初歩の初歩レベル。やるべきはここで丸投げや教科書を調べることではなく、ヘルプやネットの調べ方や、キーワード抽出能力、試し実験する能力
これらの能力はExcelに限らず仕事全般に必要

278 :
その一文なくても答えてくれてなかったと思うけどね
上の質問内容もレポート全ての問題ではなく調べても考えてもい解けなかった7問です
その上で質問したので丸投げとか言われても・・・。

279 :
>>278
スレの違いすらわからない丸投げの馬鹿
マルチポスト
Rや

280 :
>>278
その努力の跡を見せるのと見せないのでは反応が全然違うのよ
次があるか分からないけど参考までに

281 :
>>278
どうやって調べたか教えて欲しい
複合参照一つにしても、
「セル番地を複合参照で列を固定」質問文そのまま検索するだけで答えが出てくる
これ以下の行動が想像出来ない

納得できる理由を持ってきたら全問解いてやるぞ。

282 :
>>281
それはあなたがexcelの基礎を熟知してるから調べたらすぐ納得出来る答えが見つかるだけです
excelの知識0未満の自分が検索しても相対参照複合参照セル参照、固定etcどんどん理解不能な専門用語が出てくるだけで
基礎知識0の人間がいくら調べたとこで応用の問題が解けるわけない
努力とか苦労とか抜きで単純に教えたくないだけでしょ
0から腰を据えて勉強する時間もないので色んなとこをあたってみます

283 :
>>282
昔自分もそうだったから気持ちわかるよ
ただわからないままでいいから答えだけ教えろって態度が良くなかったね
Excel総合相談所の方では途中まで答えてくれようとしていた人いたのに勿体無い

284 :
というか聞くならこんな場末の掲示板じゃなくて同じ講義受けてる友達に聞けよ

285 :
宿題丸投げからの捨て台詞
伝統ですな

286 :
どこの質スレでも、どこまでわかっててどこからわからないかとか説明しないと丸投げは答えを貰いにくい
それはともかくとして内容的にここではスレチなので該当スレに移動して聞くのがよい
そういうの無視して自己中心的な態度を取ると相応の反応しか来ないことが多い

287 :
>>263
@ SUM($F5:$F9) A SUM(F$5:F$9) B SUM($F$5:$F$9)
@ B5 * SUM(C5:E5) A F5 / $F$10 * 100
B IF(G5>0.2,"〇", "")
C Average(C5:C9) D MAX(C5:E9)

一番目は問題文が意味不明すぎて何ともいえない。答えを記入て?コピー入力時の値なの入力数式なの?
二番目、レポート第三回「算術演算子のミス」ってのが*/じゃなく×÷を使えって意味なら変えてね

288 :
三番目の0.2は20の間違いだった

289 :
>>282
熟知するまでにどれほどの努力が有ったんだろうね。

全く教えがいが無い。
どうせ身に着けようとしないから3日もすれば同じ質問してくる。

290 :
バカは自分のことしか考えない。
上級者がそうなる迄にどんな努力したのかとか、全く考えない。

291 :
>>282
何のレポートか知らないけどこういう試験みたいなレポート課されるってことはExcelのこと教えてくれる講義かなんかでしょ?
それ取っといて基礎知識0なわけないよね
サボってたなら自業自得だ諦めろ

292 :
ここで教えてもらったり聞いたりするのも勉強だろ?
丸投げで解決するなら効率良いし

293 :
結果だけ知っても応用無理
自力でやった過程も大切
自力で訊いたとか言いそう

294 :
>>292
聞き方が悪すぎてそれすら出来ていないw
礼儀正しく聞くか努力した後を見せるか、それだけで全部終わるのにな〜んもせずに時間の浪費
社会に出てこなくていいかな

295 :
>>292
解決できるなら効率いいけど結局解決できてないし煽られて顔真っ赤になって効率マイナスになってるぞ

296 :
礼儀w
ここをどこだと思ってるんだ

297 :
顔が赤い?
ここはインターネットだから見えないのになぜわかるw

298 :
>>296
vbaスレだよ
下手に出るor努力家なら普通に教えるし、
上から目線で面白いキャラならそれはそれで笑いの対価に答えてあげる楽しいスレ

俺はどう調べたかを教えてくれれば答えるつもりだったけど、何故かそれすら無かった

299 :
しょうがねえな答えてやるけどどこの学校の何の課題かだけ教えろ
課題の背景知らないとどう回答していいのかもわからんわ

300 :
>>287さんのような立派な人が教えてくれる
何も知らない人は難癖付けて優越感に浸るだけ

301 :
うんち大学うんち学科のうんち講義の課題だ

302 :
なるほどなあ
立派にうんちへの道を歩んでいるようで何よりだよ

303 :
教える奴ってのは教わった奴がそれで成長するのが嬉しくて教える。

教わっても課題提出した後はゴミにするようなバカに教えるわけが無いだろ。

304 :
>>298
最初は下手に出てたけど嫌味を言ってくるから同じ対応しただけっすよ^
何度も言ってるけど自分にexcelの基礎知識が一切ないから「こうやって解こうとしたけど此処が分からなかった」とか
理屈だって説明ができないって言ってるじゃん。日本語理解してます?
最初から教える気がないくせに気持ちが悪い。
(解いて貰うことが当たり前とは全く思ってないけど、こういう難癖爺は本当に不愉快です)

305 :
基礎知識が無ければ解かなくて良いだろw
お前のやり方でOKなら世の中にExcel使える奴なんて1人も出て来ないんだよ。
皆、努力してる。
それが嫌なら解くな。

306 :
これがうんちの書き込みなんだね
勉強になる

307 :
最後まで下手に出てりゃ教えて貰えたかも知れないのに
本当バカだな

308 :
だまされる間抜けがいるか

309 :
最初から一貫して、考える気がないから答えだけ教えろと言ってるから反発を買ってると何故わからない
そういうのは下手に出てると言わない
それ以前にスレチ、マルチポストなんかどこでも嫌われる

310 :
>>304
Rや、クズ

311 :
何がどうスレチなのか本人理解していない
本当にExcelを起動させたことだけはあるってレベルなんだろうな
それにしても相対参照なんてはじめてのExcelみたいなテキストの初めのほうに出てくるのに理解不能な専門用語って…

312 :
賢くないんだろうな、色々な面で
人生大変そう

313 :
>>304
だから「何をして」分からなかったの?って聞いてるんだけど
君の行動を知りたいんだよ
まさか何を検索したかも覚えてないの?

314 :
まぁでも複合参照って単語は俺も覚えてないわ。使わんやろ

315 :
>>313
出ている問題文を区切って単語単位でいくつか検索しましたよ。
・・・ですが基礎知識が皆無なので分からない単語が更に増えていくばかりで意味がなかった。
答えにたどり着いていたとしてもそれが答えなのかどうかもわからない。
理由は単純明快で”どこどこ”が分からない等ではなく”excelの全てが”分からないからです。>>311さんの言う通りexcel起動したこともないので
まあ此処では教えてもらえないでしょうね

316 :
excel起動したこともないwwwwwwwwwwwww
笑った

317 :
笑ったから教えてあげる
>>287は全部間違いなく合っている
終わり

318 :
使えるかどうかしらんけど一応全部回答済みのブック
https://dotup.org/uploda/dotup.org1894821.xlsx.html

319 :
そういやあっちのスレに、OSがWindows10で、バージョンはExcelって書いてるな。

バージョンがExcelって何だよ?
一体どんな環境で勉強してるんだ?
紙だけでやろうとしたら、そりゃわからんわ。

320 :
>>318
多分Excelソフト自体持ってないんじゃない?

なんか色々合点がいった
そりゃあわかんないよね…頑張れ高校生!

321 :
Excel起動したこともないって、完全にやる気ないんじゃん
実際にやっても見ずに文字だけ見たってわかるわけがない、そんなの知識あるなしは関係ない
なんでそれをそんなにドヤって語れるんだ
ほんとに身勝手だな…

322 :
もう釣りとしか思えない

323 :
>< ←これ使い出したあたりからネタにしか見えなくなった

324 :
さすがにエクセル起動したことない奴にマクロを説明するのはしんどすぎるわ

日本語話せない外人に川柳の深さはさすがに説明できないです

325 :
>>314
複合参照はよく使うでしょ
これやっとかないとずれるじゃん

326 :
ちゃんとネタに付き合ってるところがお前らのいいところだわ
他スレじゃここまで付き合うやついないわ

327 :
>>325
複合参照自体はそれなりに使うけどその単語は知らんかったわ
てか意味の取りづらい単語だな

328 :
商業高校などでExcelは必須科目のはずだが、「起動したこともない」生徒を教えるのはしんどいなあ

329 :
問題に親切にも、教科書P99とか、レポート第3回参照とか書いてあるけどな

99ページ超えるような教科書と、過去3回以上のレポート提出があって
エクセルの知識ゼロとか言うあたり、どうしようもないな

330 :
人に教える能力がない奴に限って大声で叫ぶ
分からないなら黙ってりゃ良いのに出しゃばるなってw
>>287さんのような人は素晴らしい

331 :
まだやってんのかよ
こんなとこ覗いてる暇があったらExcel勉強しろよバカなんだから

332 :
もう諦めてその単位落とした方が自分の為まである

333 :
>>330
こんな馬鹿に回答を示すやつが馬鹿だろ

334 :
>>333
反応するお前も馬

335 :
これだからスレの使い分けをしないやつらは迷惑なんだ…

336 :
>>327
俺も複合参照って呼び名は知らんかったわ

337 :
とりあえず問題画像を拡散して学校名とクラス辺りから特定してみようか
3連休のくだらない遊びとして

338 :
これまで発掘された投稿(日付順)
ttps://mevius.2ch.sc/test/read.cgi/bsoft/1556754363/731-
>>263
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12210409122
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10210410850
ttp://www.excel.studio-kazu.jp/kw/20190711212238.html

ttps://mevius.2ch.sc/test/read.cgi/bsoft/1556754363/806,809
>期日までに全て正解した状態で完了しないと出席足りてても単位にならない
>期日は7/24 1,2回しか提出チャンスはない
→通信制あるいは定時制?

ttps://gyazo.com/1c48e5087536c8b403b6f8ef9131b00c
>2019情報処理R4-5

339 :
抜けてた。エクセルの学校より
>たかが高校の宿題程度です

340 :
なんか手当たり次第だな
しかも行く先々で自己中で上からだし、根っからそういう性格なんだな…
こんな事で時間浪費するより先生に聞くなり泣きつくなりした方が早いのに

341 :
twitterあたりなら誰かがすぐ答えてくれるんじゃないのかな
なんで2chにこだわるのか

342 :
そりゃ釣りがいがあるからさ

343 :
あの調子じゃどうせこの先の人生ハードモードだから放っておけばいい
親と教師はご苦労なことで

344 :
特定を恐れただけじゃね
2chの専門板ならリスクが低いと思ったんだろ

345 :
もうやめたれ
vbaの質問スレにvbaなんか使わないこと質問してる程度のやつなんだぞ、、、

346 :
ゴミのせいでdat落ちした

347 :
へー、日本の学校では複合参照って呼ぶのかw

348 :
「列を絶対参照」とか言ってたな
厳密に言うと間違ってたんかね〜

349 :
Microsoftが言ってるんだから他の呼び方はできんだろ
https://support.office.com/ja-jp/article/-dfec08cd-ae65-4f56-839e-5f0d8d0baca9

350 :
A$1 (相対参照列と絶対参照行)
あぁやっぱりこう呼ぶのか
じゃないと区別つかなくて不便だろう

351 :
列を絶対参照はまさにそういう意味で
複合参照と言っているものと意味の範囲が異なる
だから勝手に名前つけて呼んでもセーフ

352 :
>>349
英語ではmixed referenceだから混合参照の方がまだマシな気がする

353 :
VBAでクラスのメンバに配列がpublicで宣言できないのです。
これはなぜですか?
privateならできるようです
そういう仕様になった背景に異常に興味があるのですがなぜでしょうか?

354 :
>>353
不思議だし理由はよくわからん
VariantをReDimして使うしかなさそうだ

355 :
>>354
いやgetter, setterのPublic Functionを作って使った

356 :
>>355
それだとコピーになっちゃわない?

357 :
>>356

問題ないわよ

358 :
>>353
しらなかった
https://i.imgur.com/Rzt8c7Q.png

VB.NETではできる様になっているので特にバッティングする要素などはないはず
多分何も考えずに作ったか、スペックの低いPC時代に何かバグがあったか

359 :
なにがなんでもユーザーにオブジェクトをカプセル化させたかったんだろう

MSはユーザーを誘導しようとして変な仕様を盛り込むのをよくやる

360 :
https://pbs.twimg.com/media/D_edPTAU4AEYvVl.jpg:orig

361 :
>>359
配列だけだからそれはない
別の事情があったか、単にミスだと思う

362 :
>>358
この謎仕様と、引数付きコンストラクタを定義できない欠陥仕様がVBAのクラスモジュールの使い勝手を異常に悪くしてるよな

363 :
>>357
小さければまあ

364 :
VBAできたのOffice95だろ?
16bitに毛が生えたようなリソースで配列なんて便利なもん公開したら
アホが無駄遣いしてクレームが殺到するからだろうな

365 :
>>364
> VBAできたのOffice95だろ?
Excel だけは先行しててExcel 5.0から
Office 95からWordとかAccessにも搭載された
> 16bitに毛が生えたようなリソースで
配列は32KB制限とかあるからリソース関係って言うのはあり得ると思う

366 :
まぁVB含めてなんでこんな糞仕様やねん
てのは歴史的理由が大半なので深く考えてもしょうがないぞ

367 :
比較演算子の全項評価されるのまいった
一貫性があるといえばそうだがものすごく使いづらい

Excel VBAこそ関数型言語使うべきだったとおもう

368 :
Sub Sample()
Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer
RangeArea = InputBox("選択したいセル範囲を入力してください", "セル範囲入力")
Range(RangeArea).Select
i = 1
For Each rng In Selection
rng.Value = i
i = i + 1
Next rng
RowCount = Selection.Rows.Count
Selection.Copy
Selection(Selection.Rows.Count, 1).Offset(2).Select
Selection.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub



このコードの最初の部分のセル範囲を選択するところをapplication.inputboxに変更したいのですが、やり方がわかりません。どうかご教示ください。

369 :
>>368
これで普通に動いたんだが

Sub Sample()
Dim rng As Range, i As Integer, RangeArea As String, RowCount As Integer
RangeArea = Application.InputBox("選択したいセル範囲を入力してください", "セル範囲入力")
Range(RangeArea).Select
i = 1
For Each rng In Selection
rng.Value = i
i = i + 1
Next rng
RowCount = Selection.Rows.Count
Selection.Copy
Selection(Selection.Rows.Count, 1).Offset(2).Select
Selection.PasteSpecial xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub

370 :
変更したのは産業目だけね

371 :
今北産業

372 :
>>369
ありがとうございました

373 :
VBAのクラスでPublicな変数とか少しびっくり。
正直意味不明だわ。
普通はプロパティー作るんじゃ無いの?

374 :
面倒だから、自分用はほとんど変数だな

375 :
>>373
まんまGetとSetを用意しといて「Public変数じゃない、カプセル化してます」と言う愚かな奴はいるかも知れない。
いや、流石にいないか

376 :
>>375
えっ?
カプセル化してますなんて言わんがGETとLET用意するよ。まんまでも。
感覚として自然に。
自分はプロパティーはプロパティーと呼ぶしPublic変数とは言わないね。

377 :
>>376
プロパティが変数に直接紐付いているとは限らないから一概には言えないけれど
Public 変数が適している場合はPublicとして晒すさ。

378 :
>>376
クラスがある変数を持ってたとして、
直接GetとLet用意することは少ないしPublicにするのは更に稀だ

一応念のため断っておく

379 :
>>378
だから変数じゃないし。
プロパティーだし。
クラスがpublicな変数持ってるという考えが既に変に感じる。
勿論、内部にprivateな変数を持ってるのは当然だけど。

カプセル化等という言葉では無く(実際はその通りだけど)、感覚としてオブジェクトというものを捉えていれば普通の感覚。

380 :
>>377
プロパティーは変数という感覚と違う。

381 :
>>379
同じだなんて言ってないでしょ?

> クラスがpublicな変数持ってるという考えが既に変に感じる。

なんで??
勝手に触っちゃダメとか変更に弱くなるいうのはわかるが、それ以外の理由を持ってるみたいだね?

382 :
>>381
カプセル化と結局一緒だけど、オブジェクト志向的に自然な考えからするとpublicな変数というのが変。
オブジェクトに意味のない数値がくっ付いてるイメージだね。

Excelでいうとセルに何故か変数がくっ付いていて、それがセルに関わるValueとかLeftとかそういう"意味付け"も持っていない感じ。

383 :
クラスというのはオブジェクトを設計するわけだから意味の無いものをくっ付けるのは設計として違和感がある。
そして、意味が有るものはプロパティーとして設計するから自然にGET、LETを使ってた。

384 :
>>373
そもそもvbaでクラスを作る事は本当にない
ブックがpublicみたいに見えるから今更privateとかにしても仕方ない

実際はprivateブックの下位に書いてるからpublicに見えるだけなんだろうけど、まぁ同じ

385 :
>>383
それも意味分からんわ
意味ないものをくっつけるってなんのこっちゃ?

386 :
>>385
うまい言葉が見つからんが、ようは「宗教観の違い」ってやつじゃないか?
たぶん>>383の言いたいこととしては、
「プロパティにアクセスしてGetなりLetなりSetなりできるのに、
 この上Publicにして外部モジュールからメンバ変数への直接参照を可能にする意味があるのか?(設計おかしくね?)」
みたいな感じじゃないかなと思う。

387 :
着エロでおRクパァしたら萎えるだろ

そういうこと

388 :
>>386
むしろGetもLetもできるならPublic変数でよくね?

389 :
>>388
>GetもLetもできるならPublic変数でよくね?
そういうところが「宗教観の違い」なんだろうと思ったわけで。
>>383がこう思ってるんじゃないかなと思って書いただけだから、実際言いたいことは違うかもしれんし。

390 :
その宗教も生まれてから長い年月が経ったものだなあ

391 :
VBAが悪いとかVBが悪いとか宗教とか別スレ立ててやれよ
どうでもいいわ(笑)

392 :
>>391
あんまりよくない
他言語・複数開発の常識を鵜呑みにしてvbaに持ち込むとめんどくさくなるだけだぞ

393 :
それはもうその人がアレなだけでしょ

394 :
程々が一番なんだけど、vbaに至ってはその采配がマジで難しい
普通は使い勝手の悪い言語は全自動で廃れるけど、恐らく唯一無二で太古の使い勝手のまま広まってしまった言語
どうしても荒れると思うし、正解もない

395 :
>>1
スレタイに戻れよ
>ExcelのVBAに関する質問スレです
>コード書き込みや作成依頼もOK

396 :
Worksheet_SelectionChangeイベントを使って選択されたセルがColumns(20)を超えて選択された場合に選択を19までに戻したいんですけどコードを教えて下さい。

397 :
application.enableEvents = false
if selection.column > 20 then
selection.resize(selection.row,19).select
end if
application.enableEvents = true

398 :
まちがえた
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Selection
If .Columns.Count >= 20 Then
Excel.Application.EnableEvents = False
.Resize(.Rows.Count, 19).Select
Excel.Application.EnableEvents = True
End If
End With

End Sub

399 :
enableEvents操作いらんかったわ

400 :
>>398
早い返信ありがとうございます。
コードありがとうございます。

これって例えば選択したセルが30から60と選択された場合ってエラーですか?

401 :
いや、
30〜60列目までの範囲が選択されたら
30〜48列目が選択された状態に変える
要望内容を捕らえ違えたかな?

402 :
もし19列目(T列)移行を選択しないようにするって意味なら以下
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ActCel As Excel.Range
Set ActCel = ActiveCell
With ActCel
If .Column >= 20 Then
Set ActCel = Cells(.Row, 19)
End If
End With
Dim cngRng As Excel.Range
With Target
If .Column > 20 Then
Set cngRng = Range(Cells(.Row, 19), Cells(.Row + .Rows.Count - 1, 19))
ElseIf .Column + .Columns.Count > 20 Then
Set cngRng = Range(Cells(.Row, .Column), Cells(.Row + .Rows.Count - 1, 19))
End If
End With
Excel.Application.ScreenUpdating = False
Excel.Application.EnableEvents = False
If Not cngRng Is Nothing Then
cngRng.Select
ActCel.Activate
End If
Excel.Application.EnableEvents = True
Excel.Application.ScreenUpdating = True
End Sub

403 :
’こんな感じじゃなくて?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim rng As Range
  Set rng = Intersect(Columns("A:T"), Target) '20まで
  If Not rng Is Nothing Then
    rng.Select
  Else
    Cells(1, 1).Select 'エラー時A1を選択
  End If

End Sub

404 :
行が削除された。行が挿入されたを認識したいんですがなんか方法ありませんか?

405 :
>>404
別シートから認識したいシートを参照しておき、参照先が変わったら認識とか
めんどくさすぎるか

406 :
>>404
WithEventsの変数2つ作って行削除行挿入のコントロールを入れておいてclickイベントで弄る

407 :
どんな状況で使うんだそれwww
勝手に削除するやつがいるのか?

408 :
おるぞ・・・

409 :
Worksheet_Changeイベント内で

if Target.Columns.Count=Columns.Count Then

の中に、コピーされた時を想定してデータを貼り付けた時に特定のセルを消してます。

このイベントは行削除も行挿入もif中に入ってくるので、その2つの場合は除きたいんですけど、無理ですかね?

410 :
素直にシート保護するんじゃダメなの?

411 :
>>409
その条件を別の方法に変えたら?
貼り付けのイベントを拾うとか。

412 :
>>404
でけたっぽいが、あらゆる使用状況でテストしたわけではないよ

Dim Sel As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 Set Sel = Target
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo GoErr
 If Target.Row = Sel.Row Then
  Debug.Print "変更"
 Else
  Debug.Print "挿入"
 End If
 Exit Sub
GoErr:
 Debug.Print "削除"
End Sub

413 :
別途配列にも代入しとけば、削除に反応してSQLのDELETE文の発行にも使えるね
そんなことやったような記憶
あんまりお洒落なことすると、ハマる恐れもあるが

414 :
挿入ってなんかエロいな

415 :
じゃあ insertと言い直せ

416 :
oh,yes

417 :
「VBA StringBuilder」とかでググって出てくるコードの例(具体的にはhttps://qiita.com/e-katayama/items/8a114357b0df91cfbdbbなど)をベースに、特定の変換をかけた文字列を高速に連結する方法を考えてるんだが、
Midステートメントを使った置換そのものは早いんだが、クラス化すると処理全体としては&演算子を使った連結の方がなぜか早くなる。
可能な限り文字列型への代入は避けてるし、引数もByRefにしてるんだが、イマイチ原因がピンとこない。
StrPtrでm_bufferのポインタを確認すると、クラス内から見ればポインタはずっと同じだが、
呼び出してる外部モジュール側から確認すると、AppendやToStringとかのメソッドを呼び出す度に2つのアドレスを行き来してる。
これは自分のやり方が悪いんだろうか?

418 :
コード晒してくれればボトルネックになってるとこを見つけれるかも
今日暇だからやってみるぞ

419 :
>>413
配列に対してDelete出来るの?

>>417
どうやってるのか知らんけど、
ループ内でProperty Get使ったら、物凄く遅くなって、
やっぱ俺2次元配列でいいわwwwwってなったことはある。

420 :
>>419
まあ、自分の書いたコードなんて単なる設定
利用したルーチンがほぼほぼお仕事する
何を使うかで1万倍ぐらい違うこともあるだろ(笑)

421 :
あと、画面更新の負荷はものすごい大きいよな

422 :
>>419
> 配列に対してDelete出来るの?
配列と比較してシート側の削除を検出するってことじゃないかな

423 :
デリケートにやるんだ

424 :
>>418
ありがたいが、今ぱっと出せるのがクラス部分ぐらいしかない・・・
(StringBuilder.cls)Option Explicit
Private sBuf As String
Private iBuf As Long
Public Sub Initialize(ByRef tSize As Long)
  sBuf = String$(tSize, vbNullChar)
  iBuf = 0
End Sub
Public Sub Append(ByRef sValue As String)
  If iBuf + Len(sValue) > Len(sBuf) Then sBuf = sBuf & String$(Len(sBuf) * 2 + Len(sValue), vbNullChar)
  Mid(sBuf, iBuf + 1) = sValue
  iBuf = iBuf + Len(sValue)
End Sub
Public Function ToString() As String
  ToString = Left$(sBuf, iBuf)
End Function
https://excel-ubara.com/excelvba4/EXCEL271.html
のに少し手を加えただけなんだが(class_initializeでなく、呼び出し側が必ずinitializeを呼び出してサイズを決めるようにした)。
呼び出し側のコードが今手元になくて夜中までちょっと無理なんだが、やってる中身は、
Set objStringBuilder=New StringBuilder
Call objStringBuilder.Initialize(CONST_SIZE)
For i=1 To Len(srcStr)
Call objStringBuilder.Append(convertFunction(Mid$(srcStr,i,1)))
Next i
Let MainFunction=objStringBuilder.ToString
みたいな感じ。実際はもうちょい複雑だが、&使う方はここが
For i=1 To Len(srcStr)
Let MainFunction=MainFunction&convertFunction(Mid$(srcStr,i,1))
Next i
になってる、ぐらいなもん。
やっぱ、文字列型変数の評価回数が多いせいなんだろうか?

425 :
行数制限でギュウギュウになってしまった。ごめん。
あと呼び出し側もOption Explicitつけてるので。一応。

426 :
>>422
そゆこと
説明不足だった
SQLの発行というのは、SQL Server等の外部DBに対して

427 :
全角文字で書くような馬鹿の後出し言い訳か

428 :
なぜかちょうど今やってることと2連続で関係してる
DB編集画面は結局フラグ式にしたけど
自分用なので、ユーザーフレンドリーより処理の単純さと自分的な分かりやすさを取った

文字列連結も改めて整理しようとしてたところ
Midは固定なら速いが、可変だと遅い
■100文字を10万回連結
・固定: 1000万字確保: 0.08秒
・固定: 5億字確保: 2.5秒 (20億字はSpace関数が駄目だった)
・可変: 2万字ずつ拡張: 3.3秒
1000万字だって十分あり得ないし、なんなら2万字でも、実際に拡張する場面はないとは思う

でも心理的にわだかまりが残る
可変の配列は0.3秒だった (ReDim Preserveで後ろへ後ろへ追加、最後にJoin)
ほどほどの固定の超速を取るか、可変の高速を取るか
これも逆に、あり得ない規模でも0.3秒、困る場面はあり得ない

429 :
い、言い訳?逆に配列をSQLで操作する方法を知らん

430 :
>>424
cで言うint left() と string left()を比較してみた
left$()の方が早い、これは予想外だったな

Sub foo()

Debug.Print "str: " & Time()
a = Time()
For i = 1 To 10000000
ToString = Left$("aaaaaaaaab", 1)
Next
Debug.Print "str: " & a - Time()

Debug.Print "int?: " & Time()
a = Time()
For i = 1 To 10000000
ToString = Left("aaaaaaaaab", 1)
Next
Debug.Print "int?: " & a - Time()

End Sub

後は文字列評価だけど、どこが必要でどこが不要かは分からないので何とも言えない
全体見ればどこで最適化したいか分かるかもしれない。後はどれぐらい減らしたいか
一日一回のマクロを10秒→1秒に減らしたいってなら寝る

431 :
>>422
>>429
やっぱそっちか。
配列にDelete出来たら便利だろうと思ったんだけど。

432 :
PDFに、AddNewAnnotでテキスト注釈を追加しようとしても、
ポップアップ注釈になっちゃう。
何でだろう?

第2引数には"Text"を指定していて、
Debug.PrintでGetSubtypeを確認しても、間違いなく"Text"と表示されてるのに。

433 :
↑自己解決

× "Text"
○ "FreeText"

こうだった。

434 :
100個くらいのxlsxデータを1つ1つ開かずにセル値を配列に格納させたいんだけど
できるだけ速く処理させるにはどんな方法がありますか?
データベース形式のファイルでないのでADO接続は諦めました。

435 :
ExecuteExcel4Macro("'[任意のファイルのフルパス]'シート名!R1C1形式のセルアドレス")で、ファイルを開かなくても読める

436 :
処理速度が速いかどうかは分からないけど

437 :
>>434
優秀な後輩にやらせる

438 :
>>428
言語による、処理系の速度の比較

C/C++ のnative・マシン語系 : 100
Java, C# などのコンパイル・中間言語系 : 10
JavaScript, Python, Ruby などの動的言語系: 1

なお、JIT は、フィボナッチ数列・素数などの計算では速いが、普通のプログラミングでは無意味

遅い理由は、I/O, 動的配列(動的コンテナ)などでメモリを動的に確保する、
動的にアドレス計算するなど

439 :
Excel VBA の速度は Cの100に対してどれぐらい?

440 :
VBAは中間言語方式だけど、内部構造の違いからC#より遅くてJavaよりは速い

441 :
Excel VBAはExcelの評価が入るとすげー遅くなるけど、
EXCELの評価ナシならそこまで遅くない
ただ、vbaで速さを求めるのはナンセンスだと思う

442 :
>>434
ExecuteExcel4Macroで開かずに読めるが、いちいち開いて読むより速いだけで速いわけではない

443 :
>>434
そもそもxlsxがzipだからなあ。
読み込みより解凍の方が長いんじゃないかと思うくらい。

444 :
>>434
定期的にインデックス化するのは他言語なら常識

445 :
意外と記憶にないコレクションからの連結
追加時にサイズを記録しといて、最後にぴったりサイズでメモリ確保してMid

(クラス想定)
Public Item As New Collection, Length As Long

Sub Add(Text As String)
 Item.Add Text
 Length = Length + Len(Text)
End Sub

Function Text() As String
 Dim Pos As Long, Var As Variant

 Text = Space(Length)
 Pos = 1
 For Each Var In Item
  Mid(Text, Pos) = Var
  Pos = Pos + Len(Var)
 Next
End Function

配列のJoinは実装のシンプルさがいいんだけど、100字+10万回で0.3秒
こっちは0.15秒という倍の速さで、そこそこシンプル、可変
普通と言えば普通な発想だけど力業のイメージがあって、やってみようと思わなかったのかも

ちなみにFor Eachを番号方式にすると、80秒ぐらいかかってびっくりした
そんな違うんだね

446 :
>>441
Excelの強みはむしろシートだと思う
ただしデータ処理用ではなく、表示・操作用のグリッドコントロールとして
VSにこんな高速高機能なグリッドコントロールはない、はず(知る限り)

特に CopyFromRecordset の異様な速さ
大量に表示した状態での動きも速い
DBの表示媒体として実は最強だと思う
(他の言語からExcelを呼び出してもいいので、VBA限定ではないけど)

447 :
セルA1からはじまる、5万行30列あるディレクトリツリーを、グループ化したいんですが、
最初のA列のみはエクセルのグループ化でうまくいくけど、B列以降がうまく行きません。
VBAでいっぱつで処理できる方法ってありますか。

448 :
>>446
何か勘違いしてない?
エクセルが速いなんて全くないんだけど

449 :
>>446
sed や tail などでいい
30GBのテキストも0.04秒で tail できたし
編集も sed は問題なかった

行数上限がない理想的なExcelが将来でても
そういう大きいDBはしんどいんじゃないかな?

450 :
つうか普通に10万レコード辺り越えたら遅いだろ
DBを舐めすぎ

451 :
つうかDBは同時接続数が多くなるほど威力を発揮する
単一接続のエクセルと比較するのがどうかと思う

452 :
質問です。

長さAに対して等間隔の点のピッチを計算したい。欲しい答えはピッチ長さ、両端の数字。

条件
両端は同一数値で30以上50以下。ピッチは190以上220以下。
共に50と220の整数に近い数値。

結果
長さ  1200
ピッチ 220☓5
両端  50

こういった計算って結構面倒くさいですか?
関数電卓で計算する分には出来ますがVBAだと全く思いつきません。
宜しくお願いします。

453 :
>>452
Aの長さによっては絶対に答えが出ない場合があるけど、その時はどうすんの?

454 :
>>452
Aの長さによっては、答えが2種類出る場合があるけど、その時はどうするの?

455 :
>>447
うまく行かないとはどういう状況?

>>452
電卓でもVBAでも他の言語でも考え方は同じ

456 :
>>452
馬鹿はRや

457 :
はい

458 :
>>455
同じ文字列なら重複分を消してセルは残して最後にグループ化という感じのをやりたかったのですが、
結局ピポッドでそれっぽいの作成して上司にぶん投げたらOK出ました。

459 :
>>453
>>454
Aの値は整数または小数点第1位まで。
優先は
ピッチが整数
答えが出ない場合はエラーメッセージ。

460 :
Prelude> let collectPitch = [(t,p,n)| t<-[30..50],p<-[190..220],n<-[1..10], 2*t+n*p==1200]
Prelude> collectPitch
[(30,190,6),(50,220,5)]
Prelude> last collectPitch
(50,220,5)

Prelude> 218*2+50*2
536
Prelude> 220*2+48*2
536

つまり長さが536 の時に (pitch,truncate)=((218,50),(220,48))の
どちらが欲しいのかわからないな

461 :
>>460
ありがとうございます。

220に近い方が欲しいです。

462 :
>>461
仕様をはっきりさせないから答えが分からない
単純に220から190まで回して両端が指定以内で良いだろ

463 :
勤務表の作成目的での使用は可能でしょうか。
50人の職員で勤務時間帯が7種類あり、休み希望や特定の勤務帯の希望があれば絶対にその希望にしなくてはならない。希望を入れたらあとは乱数で勤務表が出来るなんて事は可能ですか?

464 :
可能。
勤務が集中したりして不満がでたり、法令違反になるような勤務表になる場合もあるが。
当然解無しもある。

465 :
>>463
そういういい加減な仕様で作っても意味ないだろ
後は乱数・・・でいい訳ないやん

466 :
>>463
そういうSaaSいくらでもあるから契約しなさい
貴方がゴミを自作するコストよりよほど安上がりです

467 :
>>449
「DB」というのは、SQL Server等のDBサーバのこと
Excelを「DB」という言い方したことはないよw

そのDBサーバの内容を動的に転写して、
編集画面として使う場合、Excelが最速ってこと

編集画面なので、元データが100万行あっても、表示するのは人間が作業できる数十行や数百行
根性のある事務員がいると、千行ぐらい一気に扱えるよう要求される場合もある
千行ぐらい行くと、一般のグリッドコントロールでは動作が重くなるが、Excelはすぱっと動く、という話

468 :
>>448
>>450
>ただしデータ処理用ではなく、表示・操作用のグリッドコントロールとして>>446

469 :
半角先生を彷彿とさせる奇文
本人かもしれんな

470 :
ユーザーフォーム内にwindows explorerを埋め込む事は可能でしょうか?
windows explorerを個別に動作させたいです

471 :
>>470
埋め込むことと個別に動作させることは矛盾してない?

472 :
>>471
ユーザーフォーム内に複数のexplorerを埋め込んで、それぞれを独立して動かしたいです。
例えば、explorer1、2、3があるとしてexplorer1でディレクトリ遷移したらexplorer2や3はexplorer1に追従しないようにしたいです。

473 :
>>472
ユーザーフォーム内にexplorer1、2、3がある想定です

474 :
>>465
可能は可能なのか。
ありがとうございます。
年数別に分けてどの日も平均年数になるようにする事も可能ということですよね。

475 :
>>474
どのプログラムも厄介なのは外界とのやり取り
本当にどんな乱数ひいても仕事は回るの?

476 :
>>474
あなたは必要な用件が例えば20有るところ今2つしか言えてない
各自への負荷分散や希望労働時間も考慮すると乱数なんて使わない
仕事分かってない奴は仕様も作れない

477 :
>>472
エクスプローラー3つ起動してWinAPIでウィンドウサイズと位置を常にユーザーフォーム内にあるようにする
しか思いつきませんでした

478 :
作り始めてみないと作れるかどうかなんか分からない
作ってみりゃいい
ダメなら使わなければいいだけ
そうやって上達していく

479 :
適当に作って上達って・・
ちゃんと考えなくっちゃ上達なんてない

480 :
質問です。
セルB2の時間から4時間5秒後の時間をセルC2に記載したいときどのようにコードを書けばいいでしょうか?
セルB2が文字や数字だとC2は""でB2が時間のときだけC2に4時間5秒足したいです。
時間を足すだけなら
range("c2").value = DateAdd("s", 14405 , range("b2")
)と書けばいいのは解るんですが、分岐処理が上手くかけません。

481 :
時間の表示形式は?統一されてるの?

482 :
VBA使わずに関数だけでやっちゃだめなの?

483 :
>>463
乱数は偏っているから、使ってはいけない!

例えば、50人の場合、
5人は10回選ばれて、別の5人は0回など、極端になるから

484 :
>>480
IsDate でいいんじゃね

485 :
VBAはセルの追加削除に追随出来ないから関数で十分なものは関数を使うべき

486 :
>>476
まあ、必要要件をまとめられないのは、何が必要かもわからないからだよな
それを知るためにも、>>466さんの言っているように専門家と契約するのが
一番コストが低く済むな
自分で作る、このスレで質問するなんて要件難しくて無理だから

487 :
なんでお前らが他人の業務心配してんの
回答は
VBAで出来ますよ
で終わりだろ

488 :
>>487
でも、お前Excelもろくに使えないだろ(笑)
VBA使う意味ないんだよ

489 :
>>462
もう少しわかりやすく書いてやれよ
数値ピッチを宣言して
ピッチでMaxからMiniまでStep-1で回して
長さとピッチのモッドが60-100に収まればOK
そのピッチの値、ただこれだけ

490 :
あ、エラーはピッチがMiniより小さかったらエラーだな(笑)

491 :
>>477
普通はWebブラウザコントロール使うと思うんだが。
完全に一緒じゃないけど、よっぽど現実的。

492 :
ExcelVBAのユーザーフォーム上で、PDFを表示、操作をしたいです。
ですが、ユーザーフォームにコントロールを追加しようとすると、
「要素が見つかりません」とダイアログが表示され出来ません。
どなたか解決策をご存じの方がいましたら、教えていただけますでしょうか。。

Acrobat pro DCはインストールしてあり、ExcelはOffice365を最新の状態で使用してます。

493 :
>>492
コントロールってどれ?

494 :
バーコードたくさん作って印刷するプログラム作ってるんだけど
一筋縄ではいかないな
いろいろエラーが出て大変だわ
しかもステップインしながら様子みようとすると
中断モードでは入力できません
とやらのエラーがでる
回避する方法はあるようだけどめんどくさそうだ

495 :
>>494
バーコードってバーコードフォントがあるから楽勝だよ
気をつけるのは頭の0が消えないように文字列にするぐらい

496 :
>>495
それって外部からフォント導入しないといけないやつですよね?
会社のPCでやってるんでだめなんですよね
今はこれ↓を参照して使ってます
Microsoft Access BarCode Control 14.0
重いしエラー出やすいし別の方法があればいいんですけど

497 :
フォントの導入も出来ないのか
それはさすがにキツイなぁ

498 :
>>496
バーコード 作成 サイト
で検索したら出てきたよ
https://barcode-place.azurewebsites.net/

他にも色々あるから探してみてはどうかな

499 :
>>498
ありがとう
でも、そもそもネットすら自由に使えないんですよね
あと、数百個作って印刷するので、ネット経由だと時間かかりそう
お客さんがらみの情報を外に出すことに上の人が嫌がるだろうということを考えると
ローカルで終わる仕組みがないと厳しいですね

500 :
牢獄かよwwwww

・フォントを作る。
バーコードは0-9の10個しかない
svgで作ってローカルのhtmlに表示させる

501 :
>>500
バーコードにも色々な種類があってだな。。。
JANコードでも表現できるキャラクターは10種類の数字だけだけど、コードは20種類あって適切に並べないといけないんだぜ

502 :
>>500
セキュリティが特に厳しすぎるというよりも、意識が昭和なんですよね
人員削減されるからエクセルマクロつくるなとか面と向かって言う大御所もいるんで
とにかく目立たぬよう、些細な問題であっても起きないよう・・・と神経使うんです

今エラー回避の大きな進展があったのでなんとかこのまま組んでみます

Forで回しながらバーコードを作成・セルに配置していくんですけど
配置したセルの左上にナンバリングするコードを入れるとエラーで落ちるんですよね

バーコードを配置する処理と、ナンバリングする処理を異なるForで分けたらエラー出なくなりました
それ以外のコードは同じなんでなんだか理不尽なのですが、
理屈から攻めるより、多様なコードを試して見てどれがいけるか試して見るという
数打ちゃ当たる的な攻め方をするしかないみたいです
ステップ実行できないのがつらいですが

503 :
>>502
どう考えても自分でバグに気付いてない
オブジェクトの指定が間違ってる可能性が一番高いから、何もかも省略せずにきちんと書いてみ

504 :
なんとなく画像のバッファかなんかが溜まってる気がする
screenupdateをtrueにしたまま回すと多分落ちない気がする

505 :
>>504
それっぽいのかなと思ってます
起動して初回の処理は何の問題なくいけるんですけど
2回目ボタンを押して別のバーコードを作ろうとするとエラーがでるんですよね
印刷処理が終わった直後にバーコードや連番すべてを削除するコードを置いているんですけど
おそらく何かが残っているんじゃないかと思います

今の所は>>502で書いたように処理を分けることでうまくいってます
原因特定できたわけじゃないんですけどね
全削除のコード自体はそのままなので、ここに問題はないんじゃないかと思っています

ScreenUpdatingはFalseにしても以前のコードだと同じようにエラーがでますね
それだけじゃなくて、実用には耐えられないレベルで遅くなります

>>503
1.もしオブジェクトの指定が間違えているとするなら初回でもエラーがでるだるはず
2.今のコードと、バーコード配置直後にナンバリングするコードでオブジェクトの指定は同じ
なので、やはり原因とするには矛盾があるかな



最終的には、負荷を減らすために、1ページ分バーコードを作ったら
その都度印刷+全削除を繰り返すことで全て印刷するという形で組んでいこうと思っています
バッファ絡みだと嫌な予感もしますが、原因特定はできなくとも、エラー回避方法は特定できてきたのでなんとかなるかなと

506 :
>>505
>ScreenUpdating
これは残念
地味に自信があったのにw

>ゴミどうこう
恐らく当たっている
vbaはGC、ガベージコレクション・・要は前の作業のゴミ掃除が貧弱

一番わかりやすいのは、新しいbookをデスクトップが同じフォルダにでも作ってそこで作業させること
コード上は色々とややこしくなるが、大分緩和される

多分一番いいのはVBS、Excel外から作って、Excelをそのたびに再起動させる事
それならまず大丈夫

507 :
こういう問題が出て
https://gyazo.com/6bbc43b5a4346db69404d52e985b0244
https://gyazo.com/faf8012dcb22cdd442c687663f1e7524
セル番地(F10)について、次の問1から問3を解答しなさい。
問1 セル番地(F10)を複合参照で列を固定した答えを記入しなさい。
問2 セル番地(F10)を複合参照で行を固定した答えを記入しなさい。
問3 セル番地(F10)を絶対参照で列と行を固定した答えを記入しなさい。

1,SUM($F5:$F9) 2,SUM(F$5:F$9) 3,SUM($F$5:$F$9)  と解答したら全て間違えてました。
解答が分からないので教えて下さい。

508 :
>>507
Excelスレで完全に合ってるから教師に聞けと言われてる奴だろ
一応見直したけど合っている
教師に何が間違っているのかを聞いたほうが良い

509 :
>>507
スレチ
https://mevius.2ch.sc/test/read.cgi/bsoft/1556754363/

510 :
>508
そうです。でも全てバツが入ってました…。
返却されたプリントに、"セル番地(F10)についてここのみで記します"と書いてありました。
自分には意味がさっぱりですが何か分かりませんか?

511 :
VBAのフォームのテキストボックス内のフォントサイズが場所によってまちまちなんですが、
どうしたら統一できるでしょうか?
因みに、
テキストボックスのプロパティ(フォント名、フォントサイズ、ボックス高さ)はすべて統一しています。
https://uploader.xzy.pw/upload/20190727174533_466d653379.png

512 :
”ここの外で記します”と書いてあるかも知れないです。先生の字が汚くて読めない…
セル番地(F10)について、ここの外で記します。と書いてあるのでそれがヒントになってると思うのですが。

これを踏まえた上で>>507の解答お願いいたしますm(_ _)m

513 :
>>511
サイズ違うやつって全角じゃないの?

514 :
>>510
このスレをその教師に見せろ
その教師は無能でアホだから何も分かっていない

'以下、その教師に当てる連絡

テメーより何十年も現場で使い倒してる連中が全員正解と言っている
つまらないルールがあるならそれを書け、聞いてやった上で正解を出してやるから書き込め

'連絡、ここまで

515 :
スレ違いだっていわれてんのになめてんのか?

516 :
>>512
Rや、クズ

517 :
>>512
字が汚くて読めないなら聞け
それで何かあれば全部お前の責任だ

>>516
Rのは簡単だがもう少し成長させろ

518 :
>>512
お前みたいなゴミクズが言われたままに従うから教師がつけあがるんだよ
教師に「指示に従いたいが何書いてるか分からないから従えない」
といえば100%回答する
わかるまで聞け

519 :
>>514
ここ学校の連絡掲示板じゃないんで

520 :
>>519
ここで良い
いいから見せろ
ここでなければ教師は切り取って「あー一部がほえてるだけだHAHAHA」なんていうだけだろう

521 :
>>520
スレタイが理解できないなら仕方ないな

522 :
>>513
数字はすべて全角です

523 :
>>522
全角やめたほうがいいよ
数字としてプログラムが処理できない

使うとしたらフォトショでクリエイティブな作品を作るときぐらい

524 :
>>522
ほんとに統一されてるか?されてないから違うんじゃないか?

525 :
>>511
どうでもいいかもしれんが、何でシートでやらんの
面倒いだけじゃない

526 :
>>508
列の合計で。C10:E10が正解って落ちなんじゃ

527 :
> セル番地(F10)を
つまり「$F10, F$10, $F$10」が答えってオチ?

528 :
>>527
俺はそう解釈したが。
むしろCとかEとか何処から出てきたん

529 :
>>526
単価バラバラの個数集計して何をしたいんだ?

530 :
>>507
>>512
”ここの外で記します”だから
F10以外のセルに記する
すなわちF10以外のセルからF10を参照するにはどのように書けばいいかということじゃない?
1. $F10
2. F$10
3. $F$10

531 :
>>493
Adobe PDF Reader コントロールです。

532 :
>>531
Excelのバージョン違うけど俺も同じエラー出たからWebBrowserコントロールで表示させた

533 :
https://i.imgur.com/7ssVURS.jpg

534 :
for i = 2 to 6
Sheet1.Range(cells(i, 1), cells(i, 7)).Value = Sheet3.Range(cells(2, 1), cells(2, 7)).Value
next i
これがエラー吐くんですがどうしてだかわかりますか?
なおコードは簡略化してあります。エラーが出るところだけピックアップしてみました。

535 :
セルの結合などで配列が作れないとか?

536 :
セルの結合はしてないです

537 :
cellsにもシート指定する

538 :
流石です。できました!

539 :
もうひとつ質問です。
エクセルは24時を越える時間をセルに入力するとセルの頭に1900/1/1とついてしまいますがこれを消す方法はないでしょうか。
具体的には
Range("d2").Value = DateAdd("s", 14405 * (cells(2, 7).Value + 1), cells(2, 3))
とやって4時間の倍数を計算したとき24時を越えると時間の前に1900/1/1がついてしまいます。
これがついたときこの1900/1/1の部分を消したいのです。
例えばright関数を使って右の時間の部分だけとろうとしてもシリアル値がコピーされるのか、上手く行きません。

540 :
なお書式設定でhh:mm:;ssとしているので見かけ上はちゃんと時間だけ表示されます。
この時間をソートしたとき頭に1900/1/1がついた時間が後ろに回りこんで困っています。

541 :
>>54
> この時間をソートしたとき頭に1900/1/1がついた時間が後ろに回りこんで困っています。
そりゃ24時間超えてるんだから下に来るのは当たり前
取り敢えず簡単にやるなら
Range("d2").Value = Mod(DateAdd("s", 14405 * (cells(2, 7).Value + 1), cells(2, 3)), 1)
の様にして少数部だけにすればいい
ちゃんと知りたいなら
Excel シリアル値
あたりでググってくれ

542 :
どれも初心者が陥る有りがちな罠。
中級者以上なら皆知ってる。

543 :
>>541
mod関数を使って余りを求める発想は恐れ入りました。
しかし、コピペで上手く動作しなかったので、シリアル値が1以上だと表示されることに注目して
if文を使って1以上ならシリアル値から−1するようにコードを書き換えました。
今のところ上手く動いてますがmod関数を使った余りを求める方法のほうが遥かにスマートなので
試行錯誤しながらmod関数を取り入れてみたいと思います。
ありがとうございました!

544 :
>>543
まあ本来modとか剰余とかは整数にしか定義されてないからExcelがちょっと異常だと思ってた方がいいと思うよ

545 :
>>544
IEEEの剰余演算知らないのか
素人丸出しだな

546 :
すきあらばマウンティングとかw

547 :
マウント関数

548 :
>>532
やっぱりそうなりますか。
僕も代替策でWebBrowser使ってるのですが、こういうの気持ち悪くて。
WebBrowserだと印刷とか拡大のボタン出てきちゃうし。

549 :
時間を24以上にしたいなら
表示形式で[hh]:mmみたいに角括弧つける方法もある

550 :
>>549
ソートするとおかしいと言ってるからそれ関係ない
>>545とかもそうだがチンケな知識自慢はウザイだけ

551 :
時刻が昇順に見えなくておかしいなら[hh]:mmで昇順に見えるよ

552 :
コールバック関数をどういう状況で使うのか分からないんですけど、
↓こんな状況で使う、で合ってますか?

Sub Test()

 この中で、関数Aを実行したい場合と、関数Bを実行したい場合がある。
 If文で、関数Aと関数Bを分岐するのは嫌。

End Sub

553 :
今すぐ実行しないけど、何を呼ぶかは今決めておきたい時

554 :
依存関係を逆転するんだよ
AがBを呼ぶ場合、普通はAがBに依存するだろ?
コールバックやインターフェイスを使うことで、AがBに依存しないままでBを呼ぶことができる
それによりAを変更することなくBを別の実装Cに差し替えることが可能になり、Aの再利用性が高まる
まあVBAにはそんな小難しい概念は全く必要ないから忘れていい

555 :
コールバックは非同期だとめちゃくちゃ便利だけどvbaみたいに一本の処理が続く言語ではあんまり意味が無い
独自関数のイベントハンドラすら無いなら尚更

556 :
コールバックは非常に重要なんだけどVBAで出てくるのはサブクラスやフックなんかの高度な話の時や、コールバック使用を前提とするWin32APIの時だな。

557 :
・Microsoft HTML Object Library
・Microsoft Internet Controls
これらを参照したプログラムを社内で組んで使っています。

ベースとなるIE上のページにあるいくつかのリンク先から必要な情報を
とりだしてワークシートに並べるだけの単純なものです

これまでWindows7(64bit)+Excel2010だったのですが
Windows10+Excel2016に近々移行するという話が出ています

そのまま使い続けられたらいいなと思っているのですが、
何か明らかに問題となるような事項はご存じでしょうか?

自分で組んだものなので、修正はできるのですが、アクセスしにくい場所にあるので
事前に知っておくことができれば対応しやすいなと思っています

558 :
>>557
Win10+IEでは、IEのプロセスがしばらく消えなかったり、読み込み完了してもReadyStateがきちんと変化しなかったりで、移行にはかなり苦労すると思われる
俺はすごく苦労した

559 :
>>558
その辺は移行後じゃないと分からなさそうですね
一旦使用中止した上で確認することも考えます
ありがとうございます

560 :
IEオブジェクトはそろそろやめた方が良いね

561 :
読み込み完了を確実に知る手段がないからなReadyStateあてにならないし

562 :
ajaxがあるともう無理

563 :
>>561
実は方法はあるんだけど、あんまりスマートじゃないんで他人の使うアプリでは採用しづらい

564 :
On Error〜 と Do Loop ?

565 :
doloopで取得する方法って無限ループになりそうで怖い

566 :
Excelでソースを見られないようにする方法はありますか?
プロジェクトのパスワードはすぐに突破されるので

567 :
無いよ

568 :
と思ったけどスマン
dllにして読み込む形なら結構行けるんじゃないかと思った

569 :
見た目比較、柔らか比較、直観比較、なんて言うんでしょうね?
どうググればいいのか
スレチなのかどうか
VBAに限らず、C#でも結局、空文字連結が最良だった印象
でも問題にしたい基本はExcel VBA

 If A & ””=B & ”” Then

というのは、数字を1セルずつ入力すると数値になるけど、配列でまとめて入れると文字になったり
でも単純に「1」なら「1」なのだとしたい場合

ちなみにCStrはNullでエラーになるので&””の方が便利
便利だけでなく、速度も圧倒的に&””の方が速い
(ちなみにセルのTextプロパティもめっちゃ遅い)

ちなみにセルをString変数に代入してから比較する方が、&””より1〜2割速い
セルにNullを入力しても空文字になるので、セル側には使える
でも用途限定&ソース増えるので、よほどの大量処理で困らない限り、一般的には&””が安定かな

でも昔、「なんで空文字連結してるの?」って誰かに怒られたことがあり、なんとなく後ろめたい
でもテストを重ねるうちに例外に気付き、最初からやっときゃ良かったじゃんとなる

どうなんですかね?

570 :
あれ、1=”ー1”ってなんだw
1=”1”ね

571 :
>>569
型変換のために空文字列を連結したり0を足すのは、ワークシート上ではよくやるけどVBAでは避けた方がいい
セルの表示内容を文字列で欲しい時はTextプロパティを使うのがセオリーだし、自分でも書いてるけどString型の変数に代入するべき

572 :
>>571
Textプロパティは使わねえな。

573 :
>>558横からすみません
すごく苦労した部分の詳細や対応策を教えていただけないでしょうか

574 :
>>573
俺が試行錯誤の末に発見したのは、IEオブジェクトのVisibleプロパティが変化するとReadyStateが更新される、ということ
だから

objIE.Visible = False
objIE.Visible = True

という2行を読み込み完了チェックのループに挿入した
あと、IEが非アクティブになるとエラーで止まることがあるので、マクロ実行中は一切さわってはいけないという制約まで付く
ここまでやって、画面がものすごい勢いで点滅するけど、一応の結果は得られるようになった
あと、Win10の次の大型アップデートでIEの動作がまた変わるかも知れないので、いつまでも使える保証がない

JavaScriptやcookieやセッションの管理などが必要なければXMLHTTPを使った方が簡単で確実

575 :
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?

576 :
>>574さん
ありがとうございます

すごい参考になりました
時々ReadyStateが更新されずDo-Loop抜けずに困っていました

577 :
今でもIEなんて使ってるのお前らだけだろ
あんたの会社はセキュリティとか気にしないんだね

578 :
>ここまでやって、画面がものすごい勢いで点滅する
なると思ったけどやっぱりなるんだ

>>577
ブラウザの解釈が必要なところはどうしてもあるんだよ
ただのスクレイピングでいいなら色々な方法があるけどやっぱりキツイ

579 :
textプロパティ遅いからデータ量が多くない時しか使えない

580 :
>>569
セルに数字入れたら文字になるというのは、RangeのValueに入れてるからとかでは

581 :
>>569
自分一人しか見ないならどっちでも良いよ
他の人への見やすさを考えると関数の方が良い
文字列連結で考えられるのは
・仕様を検索し辛い。str()なら一発で見つかるが、文字列連結によるエラーなどはどう探していいのか分からん
・そもそも何をしているのかも分かりづらい。本来は文字列を入れるつもりだったようにも見える
・この記述でどういうエラーや分岐が発生するか不明。nullやDATE型が入ってる場合など

見た目比較
tostring = Str(1)
tostring = 1 & ""

どうしても使いたいならコメントをつけるなどした方が以下も知れないけどこれもアホらしいな
tostring = 1 & "" '文字列化

582 :
str(1)は"1"にならない
strは符号付文字列化だから

583 :
あぁCstrじゃないとダメなんだっけ
ずっと忘れてたわありがとう
今までのコードかなり間違えてる気がする

584 :
良く使う文字列変数名ってみんなどんな?

585 :
名前やら住所やら普通に2バイト変数名使いまくる

586 :
>>584
ちょっとしたテスト用ならs
それ以外は何の文字列かがわかる名前

587 :
>>577
IEの代わりに何を使っているのですか?

588 :
仮にIE使えなくなったら、どうすりゃいいんだろう?
UIAutomationでも使うの?

589 :
>>588
原理上は、EdgeでもChromeでもどんなブラウザでもVBAや外部アプリから操作できる
あとは必要なライブラリのインストールが許可されるかどうかで決まる

とりあえずEdgeは簡単にコントロールできるよ
https://www.ka-net.org/blog/?p=6018

590 :
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?

591 :
>>590
その操作必要?
二つオブジェクト作れば良いと思うけど、ダメなのか

592 :
ウインドウが二つになってしまうんですよ。タブじゃなく。

593 :
DOSは演算子で分かれてるんだよな
==は文字、EQUは数値
&””が高速なら、専用演算子があればもっと高速になるような
ちなみにStrCompも遅いし、Nullはエラーになる

ちなみにDOSもNull問題と似たような<ECHO は OFFです。>問題があって、
やはり”%HOGE%”==””みたいな、文字連結しながらが標準

594 :
echo.%abc%

595 :
全角英数字やめようよ

596 :
>>589
あまりにコードが長いので、Pythonにするわ。

597 :
タブブラウザで新しいタブに追加する方法はあれから発明されましたか?

598 :
VBAからJavascriptを操作

599 :
>>595
半角カタカナもな・・・

600 :
zenkaku mojimo yameyouze

601 :
Win95のハンカクからゼンカクになった時はえらく間抜けに見えたものだ

602 :
?

603 :
JSObjectのaddAnnotで、PDFに注釈付けてるんだけど、
getProps → プロパティ変更 → setPropsで、
何故かtextSizeだけが反映されない。
他の、strokeColorやcontentsは反映されるのに。
何でだろう?
エラーも出ないし。
直接setPropsなら設定出来そうなんだけど、
引数の順番がわからん。

604 :
↑ちなみに、typeとtextSizeを同時に設定しようとすると、サポートされていない云々のエラーが出るので、
先にtypeを設定してからtextSizeを設定するようにしてる。

605 :
↑解決はしてないんだけど、おそらくこれしか無いだろうと思われる答えを見つけたので、一応自己解決。

ググったら、海外でも同じ現象が起きている人が何人かいて、
自動翻訳を頼りに調べたら、「そこだけJavascriptで書け」ってのが答えらしい。

なんでだよwwww

606 :
マウスが滑って列幅やグラフをいつのまにかズラしてしまう心配

ActiveSheet.Protect Contents:=False, UserInterfaceOnly:=True
どうも、Contents:=True にしないと列幅固定できない様子

でも Contents:=False にしないと、
ActiveChart.Axes(xlValue).MaximumScale = 100
こういうのでエラーになる
(DrawingObjects:=True は関係ないっぽい)

とりあず Contents:=False でグラフのズレだけは防止できるので列幅は諦め中
Workbook_SheetActivate で保持して Workbook_SheetDeactivate で戻すとか
そういうことはなんとなくやっちゃいけない気がする

607 :
グラフはなぁ・・。
間にDoEvents挟むと収まる謎のエラーとか、ワケワカラン。

608 :
DoEventsはExcelでなんか処理がたまってメモリが爆発するのを回避してるんだろうなぁとかポインタが暴発してるのかなぁとかふんわりと考えている

609 :
配列に、大量のセルの値を一気に入れると、メモリ不足のエラーが出るけどさ、
行が65536から1048651に増えた時点で、やばいって気づかなかったんかい!

610 :
すまん、雑談スレと間違えた。

611 :
VBAは既に非推奨になっていて今後改良されることもExcelの仕様変更に追従することもない
ヤバいとしたら未だにVBAを使っていることがヤバい

612 :
Excelに標準でついてるから使ってるだけ

613 :
>>611
>VBAは既に非推奨になっていて
詳しく

614 :
Excelにpythonが載るらしい事と関係ある?

615 :
乗らないよ
アドインで作るならpythonせもC3でも書ける

616 :
環境の仕様上、仕方なくexcel_vbaからedgeを操作するコードを書く必要があります。
ieのようにcom?ole?オートメーションより操作する方法が用意されていないことが分かりました。

結果的にwebdriver経由以外は操作不可という認識です。
>>589の方も書かれている通りなのですが、
楽をする意味でもseleniumbasic+webdriverの組み合わせが最善なのでしょうか?

617 :
>>616
Javascriptにしとけって
なんでわざわざ難しくするのか理解出来ない

618 :
jsを管理ツールにぶっこんで動かすほうが100倍早そう

619 :
Jacascriptならタブブラウザのタブにページを追加することはできますか?

620 :
>>619
一行
window.open('http://www.yahoo.co.jp', '_blank');

621 :
「環境の仕様上、仕方なく」って
そんなに難しい日本語だっただろうか?
JavaScriptは理解出来ても日本語が弱いなら
とりあえずJavaScript板から出て来るなと

622 :
>>620
ありがとう。ところでVBAからJavascriptはどうやって呼び出すのですか?

623 :
>>621
回答してあげれば?

>>622
あぁ、すまん
JavaScript疑似プロトコルを使うのが楽だと思う
https://www.vba-ie.net/ie/javascript.php

「IE(InternetExplorer)のJavascriptを実行するサンプルコード」
の部分

要はURLに
javascript:〜
とjsコードを書いてページ遷移させようとするとコードを実行できる。もちろんページ遷移はしない

624 :
>>616
COMオートメーションで操作できる。
Edge内の部分にIE相当がいる。

625 :
internetexplorer_serverがその部分。

626 :
IEページ内の特定文字の表示されたリンクをクリックする簡便な方法ありませんか?

627 :
>>626
漠然としすぎてたので少し補足します
すでに開かれたIEで、
特定の文字列の入ったリンククリック
特定の文字列の入ったボタンクリック
ラジオボタンクリック
検索窓に文字入力
ダウンロードボタンをクリックしDL画面から保存
この流れを実行したいですどうかお助けください

628 :
そういう自動化は自力で調べてやるもんだ

629 :
その程度ならちょっとググれば全部出てくるでしょ
このへん一通り読んだら?
https://www.vba-ie.net/
http://www.ken3.org/cgi-bin/group/vba_ie.asp

630 :
簡便ってどのレベルかわからんけど、
getelementsbytagname("タグ名")(0).clickより簡単なのは知らん。

631 :
>>627
なんとか途中までは出来ました、ありがとうございます
ただ、ダウンロードダイアログが出るまで待機する処理がわかりません、おたすけください

632 :
>>631
ダウンロードウィンドウ出るまで待機&出たら保存クリックのやり方がどうしても思いつかない・・

633 :
>>631
馬鹿丸出し

634 :
URLDownloadToFile使えないのけ?

635 :
>>632
ダイアログが出るまで、ループ中にFindWindowとSleepを入れて待つ。

636 :
よーしパパ同じ名前のウインドウ別プロセスで立ち上げちゃうぞ

637 :
2019/8/14配信のWindowsUpdateを適用すると、Windows 7/8.1/10(全バージョン)で、

・VBVisual Basic 6 (VB6)で作成したアプリケーション
・Visual Basic for Applications (VBA)で作成したマクロ
・Visual Basic Scripting Edition (VBScript)で作成したマクロやアプリケーション

が応答しなくなり、『invalid procedure call error.』と表示される場合があるという
不具合が発生している模様。

WindowsUpdate 2019年8月度 注意事項と各KBメモと直リンク [Update 4: VB関連死亡]
http://blog.livedoor.jp/nichepcgamer/archives/1074802426.html
2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
http://blog.livedoor.jp/nichepcgamer/archives/1075495666.html

638 :
>>637
> 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
> http://blog.livedoor.jp/nichepcgamer/archives/1075495666.html

この記事で、Win10のバージョンと不具合の生じたKBの対応表があり、
https://i.imgur.com/gyz63Lm.jpg
先日(8/14)のアップデートが正に該当KBだったが、
https://i.imgur.com/4jCXivm.jpg
試しにExcelのVBAを実行したところ、何の問題もなく実行できた

記事をよく見ると、
 「invalid procedure call error.』と表示される場合があるという不具合が発生しています」

『表示される場合がある』だから、マクロを作りまくってるところは確認が大変だろうねぇ

639 :
会社のツールやばい…

640 :
スレ勃った
【アプデ/10】 2019年8月14日のWindowsUpdate後、VB関連が死亡。Windows10全バージョンにて
https://asahi.2ch.sc/test/read.cgi/newsplus/1565930238/

641 :
普通企業だといきなり素でwindowsupdate当てなくね?
wsusとかsccmとか使うでしょ

642 :
>>641
ちょっとした企業ならそうだね
まあ直接MSにつないでアップデートする不届き者がいたりするけどw

643 :
windows10の強制アップデート阻止できんの?

644 :
ParamArrayが死ぬみたいだな
https://software.opensquare.net/relaxtools/archives/3603/

645 :
>>643
10 Proなら手動更新に変更できる

【Win10】 Windows10 Proの自動更新を無効にして手動更新にする方法
〜更新プログラムの有無だけ自動確認編〜
http://blog.livedoor.jp/nichepcgamer/archives/1069099391.html

646 :
>>634
URLないので使えないと思われます
>>635.636
馬鹿なのでもう少しkwskお願いします・・お願いします・・

647 :
いまホットな話題のParamArrayについて誰か詳しく

648 :
>>647
このあたり見てわからんのならあきらめろん
https://www.google.com/amp/s/excelwork.info/excel/paramarray/amp/

649 :
可変長引数のキーワードということで理解しました

650 :
VB6、VBA、VBScriptの不具合の件、MSが対応策を取ったことで>>637の2ページも更新された。
Windows7はKB4517297、Windows8.1はKB4517298を手動ダウンロード後、適用で修正。
Windows10は、v1903/v1809/v1803が8月下旬、v1703/v1607/v1507は数日中の修正予定。
v1709のみ8月17日公開のKB4512494で修正された。

651 :
レポおつです。

652 :
VBAでもPythonでもないなら何を推奨してるんですか?ExcelマクロはVBAでやるしかないんだけど。Excelを使うなってことかな。

653 :
質問です。以下のようにArraylistにPersonを5つ、それぞれ1から5の番号をつけて追加して、そのあとセルに表示というコードなのですが、
Dim per As Person
Set per = New Person
を、Dim per As New Person に一行でまとめるとセルの出力が全部5になってしまうのですが、
これはどういった理屈なのでしょうか?
一行でまとめて書いていたのでこの仕様に気づくまでかなり苦戦してしまいました、、


'--------------------標準モジュール------------------------
Sub test()
Dim col As Object
Set col = CreateObject("System.Collections.ArrayList")
Dim i As Long
For i = 1 To 5
Dim per As Person
Set per = New Person
per.num = i
col.Add per
Next
For i = 1 To 5
Cells(i, 1) = col.Item(i - 1).num
Next
End Sub
'--------------------------ここまで--------------------------

'----------------------クラスモジュール(Personクラス)-----------
Public num As Long
'----------------------------ここまで--------------------------

654 :
https://sites.google.com/site/kanaetechwiki/vba/-vba-newtokonsutorakutanitsuiteno-zhu-yi-shuki

この辺が分かりやい?かも
宣言時にnew書くと変数の初回参照時に暗黙的にインスタンスが作成される

質問の例だと宣言時newにした場合、インスタンスはループ初回に一回しか作成されなかったものかと

655 :
>>653
Dimはスコープに入った時に1度だけ実行されるらしい
https://thom.hateblo.jp/entry/2018/06/02/185716

656 :
>>654-655
なるほど、一行だとpersonが一つしかインスタンス化されてないからコレクションの中身が全部
同一のpersonを指していたのですね、、
またDimの仕様も初めて知りました
VBA特有なのでしょうかね
ありがとうございました!

657 :
VBAなんて死亡で何も問題にない
やっと消えてくれて良かったよ
MSグッジョブ!

658 :
>>657
VBA使わなかったらExcelは何を使って動かすの?

659 :
夢と情熱で動かせばいい

660 :
Excel 使わず perl python R などということでは?

661 :
任意の言語でExcelObjectをCreateするんやで

662 :
事務職がある限りExcelはあるし、事務員はPython出来ないからExcelマクロしかない。VBだから安くて済むのに事務員もPythonやるようになれば給料が高騰するな

663 :
>>646
待つのはこんな感じ。

Do
 戻り値 = FindWindow(ダイアログのクラス名, ダイアログのキャプション)
 Sleep 1000
Loop While 戻り値 = 0

>>636みたいな嫌がらせをうけたら誤爆するけど、まあ普通はないでしょう。

664 :
PythonがExcelに搭載されていないとデメリットが大きいので使わんよ。

665 :
エクセルに古臭いVBAしかない理由って知ってる?
アップデートもなけりゃ最新言語に対応もしない本当の理由知ってるか?

666 :
知ってるよ

667 :
マジィ?

668 :
鮫島事件が絡んでるからな

669 :
鮫島よりペルシチェネンコ事件だろ

670 :
>>665
Excel自体にそこまで需要がないから。最新言語を対応させても得られる利益は変わらない

671 :
Excel自体の需要はあるやろ…
無職かよ

672 :
Excelに需要がないは草

673 :
VBAに需要がないのは間違いない
誰にも必要とされてない
お前らの独りよがり
じゃなきゃコミュニティも盛り上がるはずだけど全く超低空飛行

674 :
Excelマクロなんて事務員くらいしか使わない。マクロを使わなくてもいいようなシステムを開発したらいいだけ。企業はマクロよりRPAを使うようになってきてる。

675 :
末端の人がパーフェクトに便利さを感じられるシステムを
会社が構築してくれたらいいんだけど
実際はそういうわけには行かないわけで
隙間をうめるためのお手軽自動化ツールとしてVBA使う事になる
うちではそうだわ
VBAがなかったらクソくだらない作業を手作業でちまちまやらないといけなくなる

676 :
VBAなんて使わない方法を考えたら?
もう世間は誰もVBAなんて見向きもしてないから現状はこうなんだよ
いつまでも昔のやり方を変えないのもどうかと思いますよ
時代に合わせよう

677 :
Excelに付属してるから管理が厳しいところでも配布しやすいから使ってるだけ
時代も何も使えなくなったら代替手段探すだけのこと

678 :
個人的なものは好きにできるが、仕事の場合それはできない

679 :
>>673
...。
働けよw

680 :
>>674
もっとヒデェじゃね―かw

681 :
>>676
働こうw

682 :
クソ言語にしがみ付くなって
VBAなんて将来性もゼロの全く価値のない子供向けのお遊びコード

683 :
子供のおもちゃが企業で使われているので
コチコチ頭の上司たちが変わるまでは仕方がない

684 :
>>663
ありがとうございます!
明日職場で試してみますね。

685 :
>>682
それもう20年前から言ってるぞ

686 :
>>684
ミスると永久ループになるので、n回トライしてダメならExit Doするようにする。
分かってると思うけど念のため。

687 :
ゴルゴかよ

688 :
ExcelもPythonで動かせるようになるんでしょ?

689 :
結論から言うと純正はMSとしてのPython搭載計画は無いJavaScriptはあるらしい

https://qiita.com/yniji/items/b38bc312e860027108ac

690 :
まーPythonが使えるようになると
一挙に統計の計算で出来ることが増えるようになるらしいけど
お前らObject指向すらままならないのに
関数型言語なんて覚えられるの?

691 :
無理
そんな事が出来るなら今どきVBAなんて使ってない

692 :
>>690
Excel自体がオブジェクトなので
cells(1,1).value="foo"
だけでも立派にオブジェクト指向
問題はオブジェクトを操ってる感覚が少なすぎることかもな

693 :
pythonはpandas辺りの数学系ライブラリがめちゃくちゃ便利なだけで言語としては至って普通だと思う

694 :
本体に付属するなら何でもいいよ

695 :
>>689
これのどこを読んだら「マイクロソフトが Excel に搭載するのは JavaScript であって」なんて出てくるんだろう?

Cool to see the excitement around Python.
We had an awesome response to our survey on the Python UserVoice item. We’re working on the best way to address that feedback.

・In the meantime, these are some great tools you can use like PyXLL and XLWings
・Additionally, you can also host your backend logic via a web service in any language, including Python, and you can use web add-ins or a custom function to call that web service.

696 :
>>690
逆だ。
どんな環境でも対応出来るからVBAでやってる。
他の環境になったら対応すればいいだけ。

697 :
>>693
でも、普通に書きにくい

698 :
今出来てない奴の典型的な言い訳だな

699 :
Pythonのどこらへんが関数型言語なんだ

700 :
VBAが出来ればPython簡単でしょ。プログラミング何も知らなくても一か月あれば覚えれるし!

701 :
haskell と間違えた?

702 :
hellshake矢野と聞いてすっとんで来ました。

703 :
初心者質問ですいません。
下のコードで、Range("V3:V8")だと何事もなく範囲を指定できるのですが、
Range(Cells(…),Cells(…))だとエラーが出てしまいます。
何が悪いのでしょうか?

Worksheets("シート1").Activate

ActiveSheet.ChartObjects("グラフ1").Activate

ActiveChart.PlotArea.Select

ActiveChart.SeriesCollection.NewSeries

ActiveChart.FullSeriesCollection(1).XValues = Worksheets("シート2").Range("V3:V8")

ActiveChart.FullSeriesCollection(1).Values = Worksheets("シート2").Range(Cells(3, 3), Cells(8, 3))

704 :
>>703
シートを指定せずにセルを指定してるから

705 :
シート名.Cells

706 :
なんのCellsかを指定せんと

707 :
あー、そういうことでしたか!
初歩的なミスですね、、ありがとうございました!!)^o^(

708 :
すいません、もうひとつ助けて頂けると嬉しいです。

ActiveChart.FullSeriesCollection(1).Name = Worksheets("シート2").Cells(3, 3)

で、参照先のセルにはユーザー定義にて"8月19日"のように◯月◯日形式で表示させていますが、
グラフ凡例には2018/8/19のように表示されてしまいます。

凡例にも参照先のセルと同じように◯月◯日形式で表示させる事は可能なのでしょうか?

709 :
左辺よくわからんけどString型っぽいから
Worksheets("シート2").Cells(3, 3)を
Worksheets("シート2").Cells(3, 3).textにするとか

710 :
>>708
グラフ側に、書式も合わせる設定なかったっけ

711 :
>>708
Format(Worksheets("シート2").Cells(3, 3).Value,"MM月DD日")

712 :
この程度の事も解決出来ないなんてセンス無さすぎだから職を変えた方が良い

713 :
>>709-711
ありがとうございます!なんとか出来ました!
助かりました〜、思い通りに走ってくれて嬉しい〜

714 :
>>712
最初は誰もが皆初心者という事で許してくださいませ!

715 :
>>714
そいつただの荒らしだから相手しなくていい

716 :
VBAとVB.netの違いって何?

717 :
なんだろうね
ググってみるとわかるかもしれない

718 :
やかましい

719 :
ID:3vArKtvAM

ゆとりの馬鹿は早くR

720 :
>>716
「.net」ドットネットというのは便利な関数がめちゃくちゃたくさん入ってる箱
マイクロソフトががんばって作った

それがVBから一発で呼び出せるように準備されてるのがVB.net
別にVBAからでも使おうと思えば使えるけど調べるのが大変

721 :
>>720
その説明は...
ちょっとマズいんじゃね?

722 :
>>716
VB.netをOffice特化にしたのがVBA

723 :
>>722
オイオイw

724 :
それでいいよ
VB.NETの方が早く消滅しそうだし

725 :
VBAはPython以上に難しい。

726 :
いやいや、VB6そのものだし

727 :
歴史的経緯を知らないと理解できない変な制限や仕様が多い
そういう意味ではかなり難しい

728 :
というか単純に古すぎる

729 :
Python vs Excel 五番勝負 - 仕事で使えるのはどちら? 2019/08/21 14:37 クジラ飛行机
https://news.mynavi.jp/article/zeropython-53/

第一回戦 - どちらが気軽に使えるか?【判定】気軽に使えるのは、Excel。ただし、
Excelは有償。また双方ともWebブラウザからも使えるなど利便性は互角。
第二回戦 - CSVファイルが見やすいのは?【判定】美しく表示されるのは、Python。
ただし、Excelは汎用用途に特化しているのに対して、PythonライブラリがCSVファイルの
読み込みに特化していることが理由。
第三回戦 - グラフが作りやすいのは?【判定】引き分け。マウス操作で直感的に操作
できるのはExcelだが、Pandasやmatplotlibのライブラリに習熟していれば、Pythonでも
簡単に描画できる。
第四回戦 - 複雑なグラフが作りやすいのは?【判定】引き分け。
第五回戦 - 集計してみよう【判定】処理が複雑になればなるほどPythonが優勢。

730 :
>>727
> 歴史的経緯を知らないと理解できない変な制限や仕様が多い
32KB縛りとかあるけど、言うほど制限多いか?
具体的に数件挙げてみてくれる?

731 :
事務職がPythonやり始めたら自分でシステム作って回せるからシステム屋なんていらないよね

732 :
>>731
と思うだろ
ネットワークにセキュリティにハード等次々と恐ろしい壁が立ちはだかる
極めつけは社内のお局さま
「いままでこうやってきたから」

733 :
セキュリティはプロに委託しないとまずいだろ
あれ対人戦だから

734 :
>>732
それ
最後の1行
それで全てが終わるんだわ

735 :
そういう問題じゃないな
インフラこそ企業による差異もなく誰がやっても同じで雑事として他人任せでいいもの
経験値がないとスパゲッティ化して要件変更に対応できなくなったり、直せなくなったり
あるいは処理速度、使いやすさ(業者にも上手い下手あるが)
そもそも業務要件自体がSEが入らないと整理できなかったり、入って初めて抜けが発覚したり

「作れるか否か」と「言語仕様」に相関があると思ってるのが素人
もし「作れる」なら、他の言語でも作れたはず

736 :
5Gになるとハードとかネットワークとかクラウドで利用出来るようになるから、個々でハードを所有する必要がなくなってくるんでしょ
簡単なシステムはコーディング不要でドラッグするだけで出来る物になるらしいじゃん

737 :
アホなの?

738 :
VBAでは函数は呼び出すところより後に置く必要があるの?
C言語では呼び出すところより前に置く必要があるのに。

739 :
グローバル変数を先頭に書くルールはあるけど関数位置のルールはないよ

740 :
>>739
そうですかあ。助言してくださってありがとうございました。

741 :
>>738
> C言語では呼び出すところより前に置く必要があるのに。
前で定義すればプロトタイプ宣言がいらないって言うだけのこと
プロトタイプ宣言書いとけば前後関係はどちらでもいい

742 :
個人でPCを所有する時代も終わるし、全部クラウドで出来るから、AI作れるくらいじゃないと稼げなくなるよ

VBAなんか動けばなんでもいいんだよ。自分のルールでやればいい。
勉強しても事務職が自動化されてExcelももうすぐ終わるし無意味。

743 :
いつかはそうなるかもしれないけど今は違うんで

744 :
>>742
今から「時代が終わる」日まで飲まず食わずで過ごすの?

745 :
全くVBA触ったことない人間です
以下の内容ってVBAで実行可能でしょうか?
できるなら独学で地道にやってみようかなと思っていまして…

■現状
サイトから売上データをDLし、指定のシートにコピペ×10サイトほど

■やりたいこと概要
データDLだけでも自動化したい

■やりたいこと詳細
1.サイトにログインする(ID・パスを入力)
2.必要項目をプルダウンやチェックボックスから選び、CSVダウンロードボタンを押してデータをフォルダに格納する(あるいはVBAとおなじエクセル内にシート別でコピペ)

できるかできないかだけでも教えていただけませんか…?

746 :
VBAってメインのシステムを補って、カバーしきれなかった隙間を埋めるものっていう認識があるわ
おれが作ったプログラムで一番重宝されてるのが
メインのシステムを使うに当たってミスした場合、数百の修正を手作業で一時間以上かけて
しなければならなかったものを10分程度で終わらすことができるようにしたものだわ

メインのシステムは本社レベルで作られているものだから俺のいる地方支店ごときが
口出しできるようなものじゃない
でもVBA使えば工夫次第で補正できる

747 :
>>744
先を見て他の事を学べって事だよ。ずっとこの処理方法なんでとか言ってるアホなお局と同じだぞ。

748 :
>>745
出来るよ。PythonとかJavaScriptでも出来るし、RPAならもっと簡単に出来る。VBAでマクロ作るのに2時間かかるとしたら、RPAならそのマクロなら10分で組める。

749 :
>>748
10分!?プログラミングできる人って本当にすごい…
RPAちょっとググってみる
ありがとう!

750 :
RPAっておいくらのRPAの話なのかな

751 :
>>745
出来るけど、出来ると思ってるのが凄い。
VBA触ったことない人は、そもそもエクセルでエクセル以外のものを動かせるとは思わない。

752 :
>>751
馬鹿に言っても無駄

753 :
Ruby, Selenium WebDriver で、Chrome などのブラウザを自動操作すれば?
漏れは、下のように、yahoo とか、あちこちにログインしてる

driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym"

driver.manage.window.maximize # 画面最大

element = driver.find_element(:id => "username")
element.send_key "ここに、ユーザー名"

driver.find_element(:id => "btnNext").click # ボタンを押す

element = driver.find_element(:id => "passwd")
element.send_key "ここに、パスワード"

driver.find_element(:id => "btnSubmit").click # ボタンを押す

754 :
>>742
20年前に同じことを聞いたw

755 :
>>748
VBAでも10分位で出来るけどな。
まあ、オブジェクトまでのツリーを取得する自作ツールが有るからなんだが。

756 :
>>753
何で余計なもんをインストールする必要のあるもんを勧めるんだよ。

757 :
Excel, VBScript, PowerShell などで、IE を自動操作できたっけ?

そもそも漏れは、有料のExcel を持ってないからw

758 :
何でこのスレに居るの?
そしてIEの操作にExcelは関係無いよ?

759 :
>>757
「IE を自動操作」で今すぐ検索!!

760 :
>>757
いつの時代から来たんだ?
まあ、常に初心者はいるんだが、初心者がだっけとは言わないだろうw

761 :
>>757
Excelだけで出来る。

762 :
仮に専用の関数が無かったとしても、
最悪、SendKeysでどうにかなりそうだが。

763 :
VBSだけでInternetExplorer.Applicationからかなりの事ができる
ただしIEに対応してないサイトでは使えないので今からやるならpythonとか使った方が良い
それとExcelとは何の関係もない

764 :
1と2行目の間に新たに行を挿入し、
そこに別のセルからデータを貼り付ける。
という作業を行いたいです。

相対的に記録することによって、
作業したい行の1列目のセルを選択した状態でマクロを実行すると望む動作ができるマクロを作れました。

これを1から2000行目くらいまで繰り返したいです。

現状は、
1行目を選択してマクロ実行、
3行目(間に行を入れたので、元2行目です)を選択してマクロ実行、
と手動でやるしかない状態です
よろしくお願いします

765 :
2000行あって、その全ての行間に1行ずつ挿入(データ貼り付け)?
上からじゃなくて下からやっていけば行番号ずれない

具体的には・・・・↓

766 :
「1から2000行目くらいまで」
こういう書き方しかできない頭の出来を治せばできるよ

767 :
カーソル下に二つ動かすとこまでマクロ記録すればいい

768 :
PDFから文字を抽出する時、
PDTextSelect.GetTextだと文字化けすることがあるんだけど、
文字化けしない方法ない?

素直にWordかExcelに変換しろよって思うだろうけど、
レイアウトがアホたみいなPDFなので、
AcroExCh.HiliteListで座標を調べながら抽出したい。

769 :
>>768
エンコーディングに問題があるために正常に文字列として抽出できない状態です。
PDF変換をOS XのQuartz経由で行っているのが原因でしょう。
画像に変換してからテキスト抽出するのがいいでしょう。

770 :
そんな事をVBAでする必要ある?
お前らが良く言う適材適所はどうなった?

771 :
>>769
いや、書式ごとコピーすれば文字化けしないから、
取り出し方の問題だと思ってる。

>>770
何ならいいの?
会社のだから、好き勝手インストールできないので、
VBA、VBS、JSくらいしか選択肢無いんだけど。

772 :
Acrobat入れて貰えるならもうちょっと頑張ろうぜ

773 :
Acrobatってphotoshopみたいにjs使えなかったっけ
VBAでPDFはしんどいだろう

774 :
Excelに落とし込むならVBA。事務の現場ではでjsをメンテできる人は少ないから会社では使えない。
VBAでやる必要があるかというよりも、システムに頼むと金も時間もかかるし、環境的にExcelしか使う方法がないという感じだよ。

775 :
>>764
その望む動作をするマクロをforで指定行まで2行ごとに繰り返す

776 :
>>773
使える。
というか、実際VBAだけじゃきついので、VBAの中で使ってるわ。
tmp = "var tmp = ○○○"みたいな、変な書き方になるけど。

777 :
>>776
evalみたいに使っているのね
それが正解だと思う

778 :
Excel VBAだけでDBの構築って出来ますか?出来るとしたらどんな方法がありますか?

779 :
ないよ
たった行列が10億だか100億程度で上限があるから

780 :
シートにテーブル作ればいいだけじゃないかな

781 :
あ、そういう質問なの?
てっきりOracleとかMySQLのインストールやセットアップ、テーブルセッティングをキーストロークとかで自動化したいって話だと思った

782 :
>>779
まるでDBサーバには制限がないみたいな物言いだな

783 :
馬鹿にマジレスか

784 :
Excel 2007/2010で不思議な現象に出くわしています

以下のコードを標準モジュールに書きます

Sub main()
  Cells(1, 1).Interior.Color = vbRed
End Sub

Alt + F8で「main」マクロを実行すると「A1セル」が赤色に塗られます

ところが

function main()
  Cells(1, 1).Interior.Color = vbRed
  main = ""
End function

このような関数を作り、ワークシート内で使用すると
「#VALUE!」が戻ってきてA1セルも赤色に塗られません。

「Cells(1, 1).Interior.Color = vbRed」の箇所をコメントアウトすると関数は正常に動作します
Functionプロシージャ内部ではセルの背景色を変えるなどの処理は出来ないのでしょうか?

785 :
初心者で申し訳ないんですけど、Excelだけだとシートにテーブルを作って、VBA でデータ入力したり、更新したりするってことなのかな
DBっていうとAccessとか使うしかないってこと?

786 :
DBってなんの話ししてるかまじでわからん
エクセルをデータベースのように使いたいって話し?

787 :
>>785
入力とかシート上でできることはわざわざVBAでしなくてもいいんじゃないの、入力フォームが欲しいとか言うんでなければ

788 :
複雑なデータ抽出とか更新処理はVBAでやらないと大変なんじゃないかね

789 :
DBを構築して何をやりたいのか

790 :
adodbやadox使えばaccess買わなくてもmdb使えるし
MS-SQLExpressなんかもタダで使える

791 :
>>790
ありがとうございます!これのことだと思います。調べてみます

792 :
>>784
その通り、ワークシートから呼び出された関数からは別のセルは加工できない仕様になってる

793 :
>>784
状態変える処理やるとそこで強制終了するね
エラーでキャッチもできないし

794 :
Excel以外は会社の縛りで入れちゃダメって設定だったろ?

795 :
>>794
( ゚д゚)ポカーン

796 :
>>792-793

Cells(1, 1).Interior.Color = vbRed を

Cells(1, 1).Font.Color = vbRed

にすればちゃんと動くんだがなあ

残念

797 :
>>794
普通はAccessも入ってるもんだが。

798 :
>>796
実施後にセルの色を変える処理を呼び出せば少し高度だけど可能。
SetTimerを使う。

799 :
>>797
Access外す所多いよ

800 :
DBと言われてaccessだと思う人って少ないよね

801 :
>>800
でしょうね
でも、DBのフロントエンドなら私としては断然ACCESS

office365に移行した会社増えてるみたいだから、実は使えるようになってますって人もいるんじゃないかな

802 :
DBと言えばaccessと思う人って多いよね

803 :
そしてデフォルトで使ってうっかり誤操作してデータ壊すまでが洗礼
トランザクションとは

804 :
DBZ

805 :
>>802
エンジンはWindowsに標準で入っているから
メモ帳があれば使えるDBだし

806 :
DBがOS標準で入ってるのは知ってるんだけど
じゃあaccessって何のために存在しているの

807 :
フォーム、レポート、クエリーエディタ
データシートビューでも連結テーブル表示できるし
Excelと違って型チェックする必要ないから楽だぞ

808 :
>>806
DBだけじゃないから

809 :2019/08/29
PowerQuery使えばいいのに

ふらっと C#,C♯,C#(初心者用) Part139
オブジェクト指向は愚かな考え。この世は計算式 ★3
関数型プログラミング言語Haskell Part33
C++は難しすぎ 難易度:4
ネットワークプログラミング雑談
Rust Part7
Java入門・初心者質問スレ Part.10
ECMAScript デス 4
テスト
Excel Python 質問スレ
--------------------
テスト
独身のメリットがわからないんだが・・・ どんな底辺でも夫婦で働けば世帯年収400万は硬いだろう [623653551]
【マテル】WWEフィギュア【ジャックス】
◆◇El Blanco Real Madrid 1047◇◆
■大京アステージてどうよ第6号議案■
福         島          県
【韓国】日本文化全体に広がる韓国市民の不買運動、人気だった日本式飲食店の現状は…[08/31]
チャーハン作ってるところ1時間見られなかったら神になるスレ72皿目
ファンレスノートPC総合スレ Part3
【蒲田】大田区のラーメン屋22杯目
玉川高島屋新南館レストラン   
俺様担専用 50
過去のノーベル賞級の発見
氏んでほしい奴の名前を晒すスレ100
な〜ごや奥様part208(IDなし)
正規表現道場 Part2
大日本帝国が今も存続してたらありがちなこと
【テレビ】King & Princeは“グループ内恋愛禁止” 高橋海人が明かしトレンド入り
web小説サイトの傾向を語るスレ Part.2
仮面ライダービルドアンチスレ part.14
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼